我们再使用自己的电脑去爬取网页信息的时候,会发现一些网页爬取次数过多,该网页就把你的电脑IP给封了。我们就无法进入想要进入的网页,或者长时间不能进入。
使用IP代理可以解决网页封IP的问题。
- 代理就是代理服务器。
- 作用
- 突破自身IP访问的限制,破解封IP这种反爬机制
- 隐藏自身真实IP
- 代理相关的网站:
- 快代理
- 代理ip的类型:
- http:应用到http协议对应的url中
- https:应用到https协议对应的url中
使用方法:
我们在向网页发送请求是加入代理皆可成功使用代理。
proxies ={'hhtp':'117.68.192.84'}
response = requests.get(url=url,proxies=proxies,headers=header)
代理池:是由n个代理组成的代理集合
每个IP代理一半都有次数使用限制,因此在做爬虫项目的时候需要使用大量的代理IP这个时候我们可以去,网上获取免费代理也可以去购买自己的代理IP。
而免费代理的可靠性差,耗时长,追求更好的体验则需要购买自己的代理IP。
项目举例:
import requests
from lxml import html
import os
# UA伪装
header = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
}
url = 'https://nn.58.com/ershouche/'
# 加入代理
proxies ={'hhtp':'117.68.192.84'}
response = requests.get(url=url,proxies=proxies,headers=header)
text = response.text
# print(text)
# 实例化etree
etree = html.etree
# 将源码加进etree对象中
tree = etree.HTML(text)
div_list = tree.xpath('//div[@class="list-wrap"]/ul/li[@class="info"]')
if not os.path.exists('58img'):
os.mkdir('./58img')
for div in div_list:
text = div.xpath('.//div[@class="info--pics"]/img/@src')[0]
pic_url = 'https:' + text
resp = requests.get(url=url, headers=header)
pic = resp.content
fileName = text.split('/')[-1]
pic_file = './58img/'+ fileName
with open(pic_file,'wb') as f:
f.write(pic)