Python爬虫设置代理

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

import requestsproxies = {"http": "http://127.0.0.1:8888","https": "http://127.0.0.1:8888",
}response = requests.get('http://www.example.com', 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.etreedef 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 = 200while True and pageNum:# 对应页码的urlnew_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("结束")returnif (status_code == 429):  # 访问次数过多print("正在重新获取第" + str(pageNum) + "页内容....")if (status_code == 200):  # 正常爬取print("===================================================")print("第" + str(pageNum) + "页:" + new_url)print("状态码:" + str(status_code))print("===================================================")page_text = response.texttree = 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 = 'https://github.com' + 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 + 1if __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)


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部