功能1:

爬取西拉ip代理官网上的代理ip

环境:python3.8+pycharm
库:requests,lxml
浏览器:谷歌
IP地址:http://www.xiladaili.com/gaoni/

分析网页源码:


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

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

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



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

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

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

Python代码实现

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

import requests
from lxml import etree
import timeclass 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).textexcept:continuedata = 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)# 追加评分率大于十万的ipif 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:continueok_file.close()return ok_ipdef run(self):return self.get_url()dl = XiLaIp_Spider()
dl.run()

Python爬虫简单运用爬取代理IP相关推荐

  1. python爬虫简单实例-爬取17K小说网小说

    什么是网络爬虫? 网络爬虫(Web Spider),又被称为网页蜘蛛,是一种按照一定的规则,自动地抓取网站信息的程序或者脚本. 爬虫流程 先由urllib的request打开Url得到网页html文档 ...

  2. python爬虫:批量抓取代理ip,进行验证,抓取豆瓣网站影视信息

    本文作为学习笔记参考用: [1]批量抓取代理ip: 找到第三方ip代理的网站,进行分析,并批量抓取,抓取程序放到Proxies_spider.py中,如下所示: import re import re ...

  3. python爬虫简单代码爬取郭德纲单口相声

    搜索老郭的单口相声,打开检查模式,刷新 没有什么有价值的东东, 不过-清掉内容, 点击一个相声,再看看有些什么 是不是发现了些什么 我们来点击这个看看, 首先看一下headers, 这个url是不是看 ...

  4. [Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(四) —— 应对反爬技术(选取 User-Agent、添加 IP代理池以及Cookies池 )

    上一篇:[Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(三) -- 数据的持久化--使用MongoDB存储爬取的数据 最近项目有些忙,很多需求紧急上线,所以一直没能完善< 使用 ...

  5. 【实用工具系列之爬虫】python实现爬取代理IP(防 ‘反爬虫’)

    系列 [实用工具系列之爬虫]python实现爬取代理IP(防 '反爬虫') [实用工具系列之爬虫]python实现快速爬取财经资讯(防 '反爬虫') 本文使用python实现代理IP的爬取,并可以防' ...

  6. 记一次用Python爬取代理IP并使用(尝试用代理IP制造直播房间访问量)

    前言 首先说一下代理IP的用法途(代码中会有涉及):代理IP可以用来隐藏你的真实IP,你访问网站是通过代理服务器来做一个中转,所以目标服务器只能看到代理服务器的IP地址,这样就可以让你的IP地址实现隐 ...

  7. python爬取国内代理ip_Python语言爬取代理IP

    本文主要向大家介绍了Python语言爬取代理IP,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. #!/usr/bin/env python #-*-coding=utf-8 -* ...

  8. python爬取代理IP并进行有效的IP测试

    爬取代理IP及测试是否可用 很多人在爬虫时为了防止被封IP,所以就会去各大网站上查找免费的代理IP,由于不是每个IP地址都是有效的,如果要进去一个一个比对的话效率太低了,我也遇到了这种情况,所以就直接 ...

  9. python爬虫,记录爬取全球所有国家-首都的简单爬虫

    python爬虫,记录爬取全球所有国家-首都的简单爬虫 本来以为简单至极,没想到获取数据还是花费了大把功夫.先上图 <table> <tr> <td> <st ...

最新文章

  1. python与Java线程实现方式的对比
  2. dojo 九 effects dojo/_base/fx 和 dojo/fx
  3. 基于django和vue的xdh官网设计
  4. JavaScript-jQuery事件
  5. 速收藏,《机器学习实战》Python3环境算法实现代码
  6. @Autowired和@Resource
  7. 互联网产品经理好书推荐
  8. AI率先引领手机“视”界革命——旷视联合IDC最新出炉AI+手机行业白皮书!
  9. python输入学生成绩计算平均值_从用户输入中计算和、积和平均值
  10. MySQL数据文件的组织
  11. Wireshark实验 - TCP
  12. linux shell fflush,強制shell腳本fflush
  13. 汉武帝不仅需要建功立业的董仲舒、汲黯、卫青,也需要能让他整天快乐的东方朔...
  14. Mybatis整合Spring框架时所需的依赖
  15. 小程序、APP、企业网站开发工具有哪些?如何使用软件开发工具?
  16. 【C语言】qsort()函数详解
  17. 什么是同构与异构?及在不同背景下的理解
  18. HDU - 1284 钱币兑换问题 (找规律/完全背包)
  19. tcpdump显示IP
  20. 如何用vb播放幻灯片

热门文章

  1. CF115B Lawnmower(贪心)
  2. 大邑移动团支部学校联谊活动
  3. 5个私域流量运营方法,教你实现流量变现
  4. 解决UIScrollView截获touch事件的一个极其简单有效的办法
  5. 汽车电子功能安全标准ISO26262解析(五)——FTA
  6. am335x UART1输入u-boot 调试信息代码修改
  7. monkey 测试 ANR 问题 整理分析
  8. CSS(层叠样式表)知识
  9. linux看不到进程管理,关于Linux下进程的详解【进程查看与管理】
  10. JAVA多线程下高并发的处理经验