使用Python爬取代理数据

在这里插入图片描述


QQ 1274510382
Wechat JNZ_aming
商业联盟 QQ群538250800
技术搞事 QQ群599020441
解决方案 QQ群152889761
加入我们 QQ群649347320
共享学习 QQ群674240731
纪年科技aming
网络安全 ,深度学习,嵌入式,机器强化,生物智能,生命科学。

叮叮叮:产品已上线 —>关注 官方-微信公众号——济南纪年信息科技有限公司
民生项目:商城加盟/娱乐交友/创业商圈/外包兼职开发-项目发布/
安全项目:态势感知防御系统/内网巡查系统
云服项目:动态扩容云主机/域名/弹性存储-数据库-云盘/API-AIeverthing
产品咨询/服务售后(同)

纸上得来终觉浅,绝知此事要躬行 !!!
寻找志同道合伙伴创业中。。。抱团滴滴aming联系方式!!


结构的分析以及网页数据的提取

/2 首页分析及提取/

简单分析下页面,
其中后面的 1 是页码的意思,分析后发现每一页有100 多条数据,
然后网站底部总共有 2700+页 的链接,
所以总共ip 代理加起来超过 27 万条数据,
但是后面的数据大部分都是很多年前的数据了,比如 2012 年,
大概就前 5000 多条是最近一个月的,所以决定爬取前面100 页。
通 过网站 url 分析,可以知道这 100 页的 url 为:

使用Python爬取代理数据_第1张图片
规律显而易见,在程序中,我们使用一个 for 循环即可完整这个操作:
使用Python爬取代理数据_第2张图片
其中 scrapy 函数是爬取的主要逻辑,对应的代码为:
使用Python爬取代理数据_第3张图片
通过这个方式,我们可以得到每一页的数据

/3 网页元素分析及提取/

接下来就是对页面内的元素进行分析,提取其中的代理信息。

使用Python爬取代理数据_第4张图片
使用Python爬取代理数据_第5张图片
如上图,我们目的是进行代理地域分布分析,
同时,在爬取过程中需要使用爬取的数据进行代 理更新,
所以需要以下几个字段的信息:

Ip 地址、端口、服务器位置、类型

为此,先构建一个类,用于保存这些信息:

使用Python爬取代理数据_第6张图片
这样,每爬取一条信息,只要实例化一个 ProxyBean 类即可,非常方便。

接下来就是提取元素过程了,
在这个过程我使用了正则表达式和  BeautifulSoup 库进行关键数据提取。

首先,通过分析网页发现,所有的条目实际上都是放在一个标签中。

使用Python爬取代理数据_第7张图片
该便签内容如下:

<table id="ip_list">……</table>
我们首先通过正则表达式将该标签的内容提取出来:

正则表达式为:
([\S\s]*)
, 表示搜索到
之 间的任意字符组成的数据。 Python 中的实现如下:

在这里插入图片描述
其中得到的 data 就是这个标签的内容了。下面进一步分析。

进入到 table 中,发现每一个代理分别站 table 的一列,
但是这些标签分为两类,一 类包含属性 class="odd", 另一类不包含

使用Python爬取代理数据_第8张图片
使用Python爬取代理数据_第9张图片
通过这种方式,就能获取到每一个列的列表了。

接下来就是从每个列中获取 ip、端口、位置、类型等信息了。进一步分析页面:

使用Python爬取代理数据_第10张图片
我们使用正则表达式对 IP 进行解析,IP 正则如下:

** (2[0-5]{2}|[0-1]?\d{1,2})(.(2[0-5]{2}|[0-1]?\d{1,2})){3}**

在这里插入图片描述
2、 端口字段
使用Python爬取代理数据_第11张图片
端口由包裹,并且中间全部是数字,故可构造如下正则进行提取:

([0-9]+)

使用Python爬取代理数据_第12张图片
3、 位置字段

位置字段如下:

使用Python爬取代理数据_第13张图片
由 便签包裹,构造如下正则即可提取:

 <a href="([^>]*)>([^<]*)</a>

使用Python爬取代理数据_第14张图片
4、类型字段

类型字段如下:

使用Python爬取代理数据_第15张图片
由包裹,中间为字母,构造正则如下:

 <td>([A-Za-z]+)</td>

使用Python爬取代理数据_第16张图片
数据全部获取完之后,将其保存到文件中即可:

使用Python爬取代理数据_第17张图片
使用Python爬取代理数据_第18张图片
/4 小结/

本次任务主要爬取了代理网站上的代理数据。主要做了以下方面的工作:

学习 requests 库的使用以及爬虫程序的编写;
学习使用反爬虫技术手段,并在实际应用中应用这些技术,如代理池技术;
学习使用正则表达式,并通过正则表达式进行网页元素提取;
学习使用 beautifulsoup 库,并使用该库进行网页元素的提取。

你可能感兴趣的:(python)