爬虫的代理
-
什么是代理
- 代理服务器
-
代理服务器的作用
- 就是用来转发请求和响应

- 就是用来转发请求和响应
-
在爬虫中为何需要使用代理?
- 有些时候,需要对网站服务器发起高频的请求,网站的服务器会检测到这样的异常现象,则会讲请求对应机器的ip地址加入黑名单,则该ip再次发起的请求,网站服务器就不在受理,则我们就无法再次爬取该网站的数据。
- 使用代理后,网站服务器接收到的请求,最终是由代理服务器发起,网站服务器通过请求获取的ip就是代理服务器的ip,并不是我们客户端本身的ip。
-
代理的匿名度
- 透明:网站的服务器知道你使用了代理,也知道你的真实ip
- 匿名:网站服务器知道你使用了代理,但是无法获知你真实的ip
- 高匿:网站服务器不知道你使用了代理,也不知道你的真实ip(推荐)
-
代理的类型(重要)
- http:该类型的代理服务器只可以转发http协议的请求
- https:可以转发https协议的请求
-
如何获取代理?
访问本机ip地址(http://www.cip.cc/)
import requests
from lxml import etree
import re
url = 'http://www.cip.cc/'
header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36',
}
page_text = requests.get(url, headers=header)
page_text.encoding = 'utf-8'
tree = etree.HTML(page_text.text)
data = tree.xpath('/html/body/div/div/div[3]/pre/text()')[0]
print(re.search(r'IP\s*:\s*(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})', data).group(1))
代理的使用
构建代理池
#代理池函数
def get_proxies_pool(url):
ret_dic = requests.get(url=url).json()
# 构建代理池
proxies_list = [] # 存储多个代理服务器
for dic in ret_dic['data']:
ip = dic['ip']
port = dic['port']
dic = {}
dic['https'] = str(ip) + ':' + str(port)
proxies_list.append(dic)
return proxies_list
获取代理池
# 获取代理池
proxy_pool = get_proxies_pool(url)
# 从代理池中随机选出一个代理
proxy = random.choice(proxy_pool)
1591

被折叠的 条评论
为什么被折叠?



