1.使用代理ip爬虫
我们在进行爬虫任务的时候经常会遇到网站设置的反爬关卡,比如单个ip一秒或者几秒内访问服务器几次,超过这个次数就把这个ip拉进"黑名单",我们一般自己的网络只有一个ip,ip封了就没办法继续访问这个网站了,那我们怎么办呢,我们可以使用别人的ip去访问啊,这样就算封了,我们再换一个就好了。
2。获取代理IP池
这里我是从一个资源网站找的https://www.kuaidaili.com/free/inha/{}/
首先我们请求该网站,并解析页面。
proxy = [] #空的数组,用来存放IP
def askurl(url):
head = {"User-Agent": "Mozilla/5.0"} #设置请求头
r = requests.get(url, time.sleep(1),headers=head)#requests模块,返回json格式数据
html = etree.HTML(r.text) #使用etree将字符串转换成element对象
ips = html.xpath("//td[@data-title='IP']//text()") #使用xpath语句获取到当前页面中的ip
ports = html.xpath("//td[@data-title='PORT']//text()")#同理获取到port
for ip, port in zip(ips, ports): #对两个数组进行遍历
line = ip+':'+port #line为IP+端口号
proxy_temp = {"http":'http://'+line} #前面部分声明使用的协议,后面用于拼接
proxy.append(proxy_temp) #将拼接好的IP放到数组里
urla = 'https://movie.douban.com/top250' #目标网址
for pro in proxy: #遍历代理池
try:
res = requests.get(urla,headers=head, proxies=pro)
# print(res.text)
print(res)
print(pro)
except Exception as e:#这里需要注意的是在python3.7往后必须使用 as e,不然会报错,之前版本使用的是 except Exception, e:
print(pro)
print(e)
continue
最后我们看看输出的结果:
<class 'requests.models.Response'>
<Response [200]>
{'http': 'http://27.43.188.247:9999'}
<Response [200]>
{'http': 'http://112.195.1.238:1133'}
<Response [200]>
{'http': 'http://120.83.104.78:9999'}
<Response [200]>
这里我们输出的不是element格式,在上面修改一下即可,不过确定的是我们可以访问成功,至此,一个代理IP实现爬虫就实现了。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- awee.cn 版权所有 湘ICP备2023022495号-5
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务