温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么利用Python爬虫爬取代理IP

发布时间:2020-12-01 14:56:54 来源:亿速云 阅读:267 作者:Leah 栏目:开发技术

这期内容当中小编将会给大家带来有关怎么利用Python爬虫爬取代理IP,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

功能1: 爬取西拉ip代理官网上的代理ip

环境:python3.8+pycharm
库:requests,lxml
分析网页源码:

怎么利用Python爬虫爬取代理IP

选中div元素后右键找到Copy再深入子菜单找到Copy Xpath点击一下就复制到XPath

怎么利用Python爬虫爬取代理IP

我们复制下来的Xpth内容为:/html/body/div/div[3]/div[2]/table/tbody/tr[50]/td[1]
虽然可以查出来ip,但不利于程序自动爬取所有IP,利用谷歌XpathHelp测试一下

怎么利用Python爬虫爬取代理IP

从上图可以看出,只匹配到了一个Ip,我们稍作修改,即可达到目的
,有关xpath规则,可以参考下表;

怎么利用Python爬虫爬取代理IP

怎么利用Python爬虫爬取代理IP

怎么利用Python爬虫爬取代理IP

经过上面的规则学习后,我们修改为://*[@class=‘mt-0 mb-2 table-responsive']/table/tbody/tr/td[1],再利用xpthhelp工具验证一下:

怎么利用Python爬虫爬取代理IP

这样我们就可以爬取整个页面的Ip地址了,为了方便爬取更多的IP,我们继续往下翻页,找到翻页按钮:

怎么利用Python爬虫爬取代理IP

找规律,发现每翻一页,a标签下的href连接地址加1即可,python程序可以利用for循环解决翻页问题即可。
为了提高IP代理的质量,我们爬取评分高的IP来使用。找到评分栏下的Xpath路径,这里不再做详细介绍,思路参考上面找IP地址的思路,及XPath规则,过程参考下图:

怎么利用Python爬虫爬取代理IP

Python代码实现

代码可复制粘贴直接使用,如果出现报错,修改一下cookie。这里使用代理ip爬取,防止IP被封。当然这里的代码还是基础的,有空可以写成代理池,多任务去爬。当然还可以使用其它思路去实现,这里只做入门介绍。当有了这些代理IP后,我们可以用文件保存,或者保存到数据库中,根据实际使用情况而定,这里不做保存,只放到列表变量中保存。

import requests from lxml import etree import time class XiLaIp_Spider:   def __init__(self):     self.url = 'http://www.xiladaili.com/gaoni/'     self.headers = {       'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36',       'cookie': 'td_cookie=1539882751; csrftoken=lymOXQp49maLMeKXS1byEMMmsavQPtOCOUwy6WIbfMNazZW80xKKA8RW2Zuo6ssy; Hm_lvt_31dfac66a938040b9bf68ee2294f9fa9=1592547159; Hm_lvt_9bfa8deaeafc6083c5e4683d7892f23d=1592535959,1592539254,1592612217; Hm_lpvt_9bfa8deaeafc6083c5e4683d7892f23d=1592612332',     }     self.proxy = '116.196.85.150:3128'     self.proxies = {       "http": "http://%(proxy)s/" % {'proxy': self.proxy},       "https": "http://%(proxy)s/" % {'proxy': self.proxy}     }     self.list1 = []   def get_url(self):     file = open('Ip_Proxy.txt', 'a', encoding='utf-8')     ok_file = open('OkIp_Proxy.txt', 'a', encoding='utf-8')     for index in range(50):       time.sleep(3)       try:         res = requests.get(url=self.url if index == 0 else self.url + str(index) + "/", headers=self.headers,                   proxies=self.proxies, timeout=10).text       except:         continue       data = etree.HTML(res).xpath("//*[@class='mt-0 mb-2 table-responsive']/table/tbody/tr/td[1]")       # '//*[@id="scroll"]/table/tbody/tr/td[1]'       score_data = etree.HTML(res).xpath("//*[@class='mt-0 mb-2 table-responsive']/table/tbody/tr/td[8]")       for i, j in zip(data, score_data):         # file.write(i.text + '\n')         score = int(j.text)         # 追加评分率大于十万的ip         if score > 100000:           self.list1.append(i.text)       set(self.list1)     file.close()     ok_ip = []     for i in self.list1:       try:         # 验证代理ip是否有效         res = requests.get(url='https://www.baidu.com', headers=self.headers, proxies={'http': 'http://' + i},                   timeout=10)         if res.status_code == 200:           # ok_file.write(i + '\n')           ok_ip.append(i)       except:         continue     ok_file.close()     return ok_ip   def run(self):     return self.get_url() dl = XiLaIp_Spider() dl.run()

上述就是小编为大家分享的怎么利用Python爬虫爬取代理IP了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI