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

打印 上一主题 下一主题

主题 979|帖子 979|积分 2937

利用python举行代理ip爬取

源码
  1. import requests
  2. import parsel
  3. import time

  4. pages = 4
  5. header = {
  6.     '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'
  7. }

  8. # 打开文件以写入模式
  9. with open('ip_ports.txt', 'w') as file:
  10.     for page in range(1, pages + 1):
  11.         print('正在爬取第{}页'.format(page))
  12.         url = 'https://www.89ip.cn/index_{}.html'
  13.         try:
  14.             res = requests.get(url.format(page), headers=header, verify=False)
  15.             res.raise_for_status()  # 检查请求是否成功
  16.             sel = parsel.Selector(res.text)
  17.             ip_list = sel.xpath('//tr')[1:]
  18.             for i in ip_list:
  19.                 ip = i.xpath('./td[1]/text()').get().strip()
  20.                 port = i.xpath('./td[2]/text()').get().strip()
  21.                 ip_port = f'{ip}:{port}\n'
  22.                 print(ip_port, end='')
  23.                 file.write(ip_port)  # 将结果写入文件
  24.         except requests.exceptions.RequestException as e:
  25.             print(f'请求出错: {e}')
  26.         time.sleep(1)

  27. print("爬取完成,结果已保存到ip_ports.txt文件中")
复制代码
源码讲解

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

  • requests:用于发送HTTP哀求。
  • parsel:用于剖析HTML内容。
  • time:用于在哀求之间添加耽误。
界说变量
  1. pages = 4
  2. header = {
  3.     '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'
  4. }
复制代码

  • pages:界说要爬取的页数,这里是4页。
  • header:设置哀求头,模拟浏览器访问,以避免被网站屏蔽。
打开文件
  1. with open('ip_ports.txt', 'w') as file:
复制代码

  • 使用with语句打开一个名为ip_ports.txt的文件,并以写入模式('w')打开。这样可以确保文件在操纵完成后主动关闭。
循环爬取每一页
  1. for page in range(1, pages + 1):
  2.     print('正在爬取第{}页'.format(page))
  3.     url = 'https://www.89ip.cn/index_{}.html'
复制代码

  • 使用for循环遍历从1到pages(这里是4)的页码。
  • 构造每一页的URL。
发送HTTP哀求
  1. try:
  2.     res = requests.get(url.format(page), headers=header, verify=False)
  3.     res.raise_for_status()  # 检查请求是否成功
复制代码

  • 使用requests.get发送GET哀求,并传递URL和哀求头。
  • verify=False:禁用SSL证书验证(不推荐在生产情况中使用)。
  • res.raise_for_status():查抄哀求是否乐成,如果失败则抛出异常。
剖析HTML内容
  1. sel = parsel.Selector(res.text)
  2. ip_list = sel.xpath('//tr')[1:]
复制代码

  • 使用parsel.Selector剖析HTML内容。
  • 使用XPath选择器提取所有[tr]元素,并跳过第一个(通常是表头)。
提取IP和端口
  1. for i in ip_list:
  2.     ip = i.xpath('./td[1]/text()').get().strip()
  3.     port = i.xpath('./td[2]/text()').get().strip()
  4.     ip_port = f'{ip}:{port}\n'
  5.     print(ip_port, end='')
  6.     file.write(ip_port)  # 将结果写入文件
复制代码

  • 遍历每个[tr]元素,提取第一个和第二个[td]元素的文本内容(IP和端口)。
  • 使用strip()去除空白字符。
  • 将IP和端口格式化为字符串,并写入文件。
异常处理
  1. except requests.exceptions.RequestException as e:
  2.     print(f'请求出错: {e}')
复制代码

  • 捕捉并处理所有requests.exceptions.RequestException异常,打印错误信息。
添加耽误
  1. time.sleep(1)
复制代码

  • 在每次哀求后暂停1秒,以避免对目标网站造成过大压力。
完成提示
  1. print("爬取完成,结果已保存到ip_ports.txt文件中")
复制代码

  • 爬取完成后,打印提示信息。
总结

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

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

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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

盛世宏图

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表