写点什么

【Python 实战】Python 采集代理 IP 信息

作者:BROKEN
  • 2023-04-29
    安徽
  • 本文字数:1316 字

    阅读完需:约 4 分钟

【Python实战】Python采集代理IP信息

前言

我们今天继续重点讲解关于 parsel 解析库的实战技巧,通过实战,我们来学习其强大的功能。


我们先来认识一下什么是 parsel 库。


Parsel 是一个用于解析 JSON 数据的 Python 库。它提供了一个简单易用的 API,可以轻松地从 JSON 文件或字符串中解析数据。可以对 HTML 和 XML 进行解析,并支持使用 XPath 和 CSS Selector 对内容进行提取和修改,同时它还融合了正则表达式提取的功能。功能灵活而又强大。

采集数据

我们上一篇介绍了,如何采集当当网里面的商品信息。今天,我们使用 parsel 方法来获取数据。通过这个案例来加深大家对这个的理解。我们来采集代理 IP 的相关信息。

发送请求

我们首先确定我们的目标网址,对我们需要获取的数据。这个是我们爬取任何网页都要做的第一步。



我们要把每一行的数据获取下来,我们接下来用到开发者工具。我们看 IP,post,匿名度,位置等信息是在什么位置。是不是在网页源代码中。接下来,我们发送请求,获取网页源代码。



我们可以观察到,每一行的相关信息都放在<tr>标签里面。我们只要提取<tr>标签里面的内容即可。


我们现在开始写代码。


url = f'https://www.kuaidaili.com/free/inha/1'
headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'}
res = requests.get(url,headers=headers)
复制代码


代码使用requests库的get()函数来请求这个 URL,并将结果存储在变量res中。

获取数据

selector = parsel.Selector(res.text)
trs = selector.css('#list > table > tbody > tr')
复制代码


我们使用 parsel.Selector() 函数创建一个 Selector 对象,并使用 css() 方法获取 #list > table > tbody > tr 元素的所有子元素。然后,我们使用 css() 方法获取这些子元素中的所有 <tr> 元素,并将它们存储在 trs 变量中。也就是我们上面提到的<tr>标签里面的内容。 我们看看效果怎么样。


获取内容

for tr in trs:    ip_num = tr.css('td:nth-child(1)::text').get()    ip_port = tr.css('td:nth-child(2)::text').get()    proxies_dict ={        "http":"http://" + ip_num + ':' + ip_port,    }    print(proxies_dict)
复制代码


trs 是一个包含所有 <tr> 元素的列表。我们使用 css() 方法获取每个元素中的属性值,其中包括 IP 地址、端口。我们把其拼接成一个字典。我们看看效果。


保存内容

我们之前都是保存成 csv 文件,这里,我们把它保存成 txt 文件。


with open('IP.TXT',mode='a',encoding='utf-8')as f:    f.write(json.dumps(proxies_dict))    f.write('\n')
复制代码


我们使用 with open() 语句打开文件,并使用 mode='a' 参数指定文件模式为追加模式(即将内容添加到文件末尾)。然后,我们使用 json.dumps() 函数将 PROXIES_DICT 对象转换为 JSON 格式的字符串,并将其写入文件中。最后,我们使用 write() 方法将字符串写入文件中,并在每行末尾添加一个换行符。

总结

本文介绍了如何使用 parsel 方法采集代理 IP 相关信息。通过发送请求并使用parsel.Selector()函数获取网页源代码,然后使用css()方法获取#list > table > tbody > tr 元素的所有子元素,并提取其中的内容。最后,将提取的内容写入文件中并关闭文件。

发布于: 刚刚阅读数: 5
用户头像

BROKEN

关注

还未添加个人签名 2022-08-02 加入

还未添加个人简介

评论

发布
暂无评论
【Python实战】Python采集代理IP信息_三周年连更_BROKEN_InfoQ写作社区