尹疋 发表于 2025-6-9 18:40:22

《惊!Python轻松实现代理IP爬取,隐藏身份畅游网络!》

利用python进行代理ip爬取

源码

import requests<br>import parsel<br>import time<br><br>pages = 4<br>header = {<br>    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36 Edg/89.0.774.54'<br>}<br><br># 打开文件以写入模式<br>with open('ip_ports.txt', 'w') as file:<br>    for page in range(1, pages + 1):<br>        print('正在爬取第{}页'.format(page))<br>        url = 'https://www.89ip.cn/index_{}.html'<br>        try:<br>            res = requests.get(url.format(page), headers=header, verify=False)<br>            res.raise_for_status()  # 检查请求是否成功<br>            sel = parsel.Selector(res.text)<br>            ip_list = sel.xpath('//tr')<br>            for i in ip_list:<br>                ip = i.xpath('./td/text()').get().strip()<br>                port = i.xpath('./td/text()').get().strip()<br>                ip_port = f'{ip}:{port}\n'<br>                print(ip_port, end='')<br>                file.write(ip_port)  # 将结果写入文件<br>        except requests.exceptions.RequestException as e:<br>            print(f'请求出错: {e}')<br>        time.sleep(1)<br><br>print("爬取完成,结果已保存到ip_ports.txt文件中")<br>源码讲解

这段代码是一个简单的Python爬虫程序,用于从指定的网站(https://www.89ip.cn/)抓取IP地址和端口号,并将结果保存到一个名为ip_ports.txt的文本文件中。以下是对代码的详细分析:
导入模块

import requests<br>import parsel<br>import time<br>

[*]requests:用于发送HTTP请求。
[*]parsel:用于解析HTML内容。
[*]time:用于在请求之间添加延迟。
定义变量

pages = 4<br>header = {<br>    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36 Edg/89.0.774.54'<br>}<br>

[*]pages:定义要爬取的页数,这里是4页。
[*]header:设置请求头,模拟浏览器访问,以避免被网站屏蔽。
打开文件

with open('ip_ports.txt', 'w') as file:<br>

[*]使用with语句打开一个名为ip_ports.txt的文件,并以写入模式('w')打开。这样可以确保文件在操作完成后自动关闭。
循环爬取每一页

for page in range(1, pages + 1):<br>    print('正在爬取第{}页'.format(page))<br>    url = 'https://www.89ip.cn/index_{}.html'<br>

[*]使用for循环遍历从1到pages(这里是4)的页码。
[*]构造每一页的URL。
发送HTTP请求

try:<br>    res = requests.get(url.format(page), headers=header, verify=False)<br>    res.raise_for_status()  # 检查请求是否成功<br>

[*]使用requests.get发送GET请求,并传递URL和请求头。
[*]verify=False:禁用SSL证书验证(不推荐在生产环境中使用)。
[*]res.raise_for_status():检查请求是否成功,如果失败则抛出异常。
解析HTML内容

sel = parsel.Selector(res.text)<br>ip_list = sel.xpath('//tr')<br>

[*]使用parsel.Selector解析HTML内容。
[*]使用XPath选择器提取所有元素,并跳过第一个(通常是表头)。
提取IP和端口

for i in ip_list:<br>    ip = i.xpath('./td/text()').get().strip()<br>    port = i.xpath('./td/text()').get().strip()<br>    ip_port = f'{ip}:{port}\n'<br>    print(ip_port, end='')<br>    file.write(ip_port)  # 将结果写入文件<br>

[*]遍历每个元素,提取第一个和第二个元素的文本内容(IP和端口)。
[*]使用strip()去除空白字符。
[*]将IP和端口格式化为字符串,并写入文件。
异常处理

except requests.exceptions.RequestException as e:<br>    print(f'请求出错: {e}')<br>

[*]捕获并处理所有requests.exceptions.RequestException异常,打印错误信息。
添加延迟

time.sleep(1)<br>

[*]在每次请求后暂停1秒,以避免对目标网站造成过大压力。
完成提示

print("爬取完成,结果已保存到ip_ports.txt文件中")<br>

[*]爬取完成后,打印提示信息。
总结

这段代码实现了一个简单的网页爬虫,用于从指定网站抓取IP地址和端口号,并将结果保存到本地文件中。通过使用requests库发送HTTP请求,parsel库解析HTML内容,并添加适当的延迟和异常处理,确保了爬虫的稳定性和可靠性。
代码安全性及意图

这段代码的意图是编写一个网络爬虫程序,用于从一个提供IP地址和端口号的网站(在这个例子中是https://www.89ip.cn/)抓取数据。爬虫程序的目的是自动访问网页,提取所需的信息(这里是IP地址和端口号),然后将这些信息保存到一个文本文件中,以便后续使用。
具体来说,这段代码的意图包括:

[*]自动化数据抓取:通过编写脚本自动访问网页并提取数据,而不是手动复制粘贴。
[*]数据存储:将抓取到的IP地址和端口号保存到一个文本文件中,方便后续的数据处理或使用。
[*]模拟浏览器行为:通过设置User-Agent请求头,模拟浏览器访问,以避免被网站的反爬虫机制屏蔽。
[*]错误处理:使用异常处理机制来捕获和处理网络请求中可能出现的错误,如连接失败、超时等。
[*]遵守爬虫礼仪:通过在每次请求之间添加1秒的延迟,避免对目标网站造成过大的访问压力,这是一种遵守网络爬虫礼仪的做法。
[*]灵活性:通过定义变量pages来控制要爬取的页数,使得程序可以根据需要轻松地调整抓取的范围。
[*]可读性和维护性:代码结构清晰,注释和打印语句有助于理解程序的执行流程和状态。
总的来说,这段代码的目的是实现一个简单、有效的网络爬虫,用于自动化地从特定网站抓取IP地址和端口号,并将这些数据保存到本地文件中。

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 《惊!Python轻松实现代理IP爬取,隐藏身份畅游网络!》