首页 > 编程语言 >Python爬虫设置代理

Python爬虫设置代理

时间:2023-05-08 10:44:06浏览次数:32  
标签:status code http Python 爬虫 代理 url print proxies

在Python中使用代理进行爬虫操作可以有效地隐藏用户的真实IP地址,防止被封禁或者限制访问。下面是设置代理的示例代码:

import requests

proxies = {
    "http": "http://127.0.0.1:8888",
    "https": "http://127.0.0.1:8888",
}
response = requests.get('Example Domain', proxies=proxies)

其中,proxies字典中的键http和https分别表示http协议和https协议,值为代理服务器地址和端口号。在使用requests库发起请求时,通过proxies参数传入代理设置即可。这里的代理服务器地址为127.0.0.1,端口号为8888,你可以将其替换为你自己的代理服务器地址和端口号。

爬虫编写

需求

做一个通用爬虫,根据github的搜索关键词进行全部内容爬取。

代码

首先开启代理,在设置中修改HTTP端口。

在爬虫中根据设置的系统代理修改proxies的端口号:

import requests
from lxml import html
import time
etree = html.etree

def githubSpider(keyword, pageNumberInit):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36 Edg/97.0.1072.62',
    }

    # 搜索的关键词
    keyword = keyword
    # 查询的起始页数
    pageNum = pageNumberInit

    # 设置一个通用的url模板
    url = 'https://github.com/search?p=%d&q={}'.format(keyword)
    # 根据代理配置端口进行修改
    proxies = {'http': 'http://127.0.0.1:1087', 'https': 'http://127.0.0.1:1087'}

    status_code = 200
    while True and pageNum:
        # 对应页码的url
        new_url = format(url % pageNum)

        # 使用通用爬虫对url对应的一整张页面进行爬取
        response = requests.get(url=new_url, proxies=proxies, headers=headers)

        status_code = response.status_code  # 状态码

        if status_code == 404:  # 最后一页
            print("===================================================")
            print("结束")
            return
        if (status_code == 429):  # 访问次数过多
            print("正在重新获取第" + str(pageNum) + "页内容....")

        if (status_code == 200):  # 正常爬取
            print("===================================================")
            print("第" + str(pageNum) + "页:" + new_url)
            print("状态码:" + str(status_code))
            print("===================================================")

            page_text = response.text
            tree = etree.HTML(page_text)
            li_list = tree.xpath('//*[@id="js-pjax-container"]/div/div[3]/div/ul/li')

            for li in li_list:
                name = li.xpath('.//a[@class="v-align-middle"]/@href')[0].split('/', 1)[1]
                link = 'GitHub: Let’s build from here' + li.xpath('.//a[@class="v-align-middle"]/@href')[0]
                # 解决没有star的问题
                try:
                    stars = li.xpath('.//a[@class="Link--muted"]/text()')[1].replace('\n', '').replace(' ', '')
                except IndexError:
                    print("名称:" + name + "\t链接:" + link + "\tstars:" + str(0))
                else:
                    print("名称:" + name + "\t链接:" + link + "\tstars:" + stars)

            pageNum = pageNum + 1

if __name__ == '__main__':
    githubSpider("hexo",1) # 输入搜索关键词和起始页数

爬取结果如下,包含搜索结果的名称、链接以及stars:

后记

爬取外网的简单测试,状态码:

import requests
#配置代理
#API代理提取链接:http://jshk.com.cn/mb/reg.asp?kefu=xjy
proxies={'http': 'http://127.0.0.1:1087', 'https': 'http://127.0.0.1:1087'}
response = requests.get('https://www.baidu.com/',proxies=proxies)
print(response.status_code)

标签:status,code,http,Python,爬虫,代理,url,print,proxies
From: https://www.cnblogs.com/q-q56731526/p/17381020.html

相关文章

  • ArcGIS将自己的Python代码作为工具箱或自定义工具
      本文介绍在ArcMap软件中,通过已有的Python脚本程序,建立新的工具箱并在其中设置自定义工具的方法。  通过本文介绍的操作,我们便可以实现将自己的Python代码封装,并像其他ArcGIS已有工具一样,进行界面化的地理处理操作。  话不多说,我们开始具体操作。首先,在ArcMap中打开“ArcT......
  • scrapy爬虫标准流程
    Scrapy爬虫的标准流程一般包括以下几个步骤:1、明确需求和目标网站的结构,确定需要爬取的数据以及爬取规则。2、创建一个Scrapy项目,使用命令行工具创建一个新的Scrapy项目。3、定义数据模型和item,即确定要爬取的数据结构。4、编写爬虫类,使用Scrapy的Spider类编写爬虫程序,根据需......
  • python 实现小车经过多个目标点
    代码   问题一  fromgeometry_msgs.msgimportPoseStamped如果geometry_msgs没下载sudoapt-getinstallros-<your_ros_version>-geometry-msgs 问题二: 没有初始化节点,rospy.init_node(‘name’)来初始化节点 在ROS中,初始化节点是一个必要的步骤,因为R......
  • Python工具箱系列(三十)
    PostgreSQLMySQL的口号是“世界上最流行的开源关系型数据库”,而PostgreSQL的Slogan则是“世界上最先进的开源关系型数据库(PostgreSQL:TheWorld'sMostAdvancedOpenSourceRelationalDatabase)”,一看这就是一对老冤家了。这两个口号很好的反映出了两者的形象特质:PostgreSQL......
  • python解释器的安装
    一.Linux环境的安装tar.gz和tar.xz安装流程一样的tarxfPython-3.8.15.tar.xz-C/usr/local/src/cd/usr/local/src/Python-3.8.15/./configure--prefix=/apps/python38make&&makeinstallvim/etc/profile....PATH=$PATH:/apps/python38/binexportPATHsource/......
  • Python学习之路和隐藏特征
    在小学生都学Python了,你还不知道怎么开始文中介绍了Python的应用广泛,功能强大,提供了Python的在线学习视频和资料等。学习程序语言不是一件难事,也不是一件简单事。为什么编程这么难中翻译了一篇编程学习的心路历程。(图例“编程信心与能力”:纵轴为信心值,横轴为能力水平,虚线从左至右依......
  • 为啥我的Python这么慢 - 项查找 (二)
    根据那篇文章改了两处写法,如下(存储于readFaJoin2.py文件中):fromcollectionsimportdefaultdictaDict=defaultdict(list)forlineinopen("GRCh38.fa"):ifline[0]=='>':key=line[1:-1]else:aDict[key].append(line.strip())......
  • 为啥我的Python这么慢 (一)
    长假结束了,这不痛苦。痛苦的是长假结束了,发现写的基因组读取程序还没运行完?在Python系列教程中,我们提到一个概念字符串是不可修改的。这一点可以通过id函数来判断确实是对的。但是这个概念会对我们写作程序有什么影响一直没有特别深的理解。直到有一次,实验室一个朋友要读基因组数据......
  • 安装爬虫框架记录(第三方库)
    安装指令:python-mpipinstall.whl文件 安装Scrapy3-1.0.1,需要的依赖库如下:zope.interface>=4.4.2constantly>=15.1incremental>=21.3.0Automat>=0.8.0six-1.16.0hyperlink>=17.1.1PyHamcrest!=1.10.0,>=1.9.0Twisted>=13.1.0(最后) 安装pyOpenSSL-23.1.1......
  • 同行盆友来稿:初探Python变量
    什么是变量在Python编程语言中,变量是用于存储数据值的标识符。它们可以用来引用数据值,而不是直接使用值本身。可以使用等号(=)运算符来将一个值赋给一个变量。变量数据类型有那些变量类型有以下几种:1.整型(int):表示整数,例如:`42`、`-3`、`1000`等。2.浮点型(float):表示浮点数(即带......