自动获取海量IP多页的地址

爬取的是89免费代理的IP地址

# 请求发送用的模块
import requests
from lxml import etree
with open("IP代理多页.txt", "w") as f:
    for i in range(1, 100):
        #发送给谁结果
        url = f"https://www.89ip.cn/{i}.html"
        print(f'正在获取{url}')
        #伪装成浏览器
        headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
        }

        # 发送请求
        response = requests.get(url, headers=headers)

        #设置编码
        # utf-8 是一种字符编码标准,广泛用于互联网和各种系统中,支持全球几乎所有的字符和符号。在 Python 中,utf-8 编码常用于处理文本文件和网络数据。
        # gbk 是一种字符编码标准,主要用于中文字符的编码和解码。在 Python 中,gbk 编码常用于处理包含中文字符的文本文件或网络数据。
        response.encoding = "utf-8"

        #接收响应
        # print(response.text)

        # 处理结果
        #创建可以提取数据的对象。
        e = etree.HTML(response.text)

        # 提取ip
        ips = e.xpath('//div//div[1]//table//tr//td[1]/text()')# //div//div[1]//table//tr//td[1]/text()最后得有/text()

        # 提取port
        ports = e.xpath('//div//div[1]//table//tr//td[2]/text()')

        # 提取地址
        addrs = e.xpath('//div//div[1]//table//tr//td[3]/text()')


        # 打开名为"IP代理.txt"的文件以写入模式操作
        # 这里的with语句确保文件操作后能够正确关闭文件,无需显式调用f.close()
        # zip函数将ips, ports, addrs三个列表组合成一个元组的迭代器
        # 每次循环中,从迭代器取出一个元组,分别赋值给i, p, a

        for i, p, a in zip(ips, ports, addrs):
        # 保存到txt文件
        # with open("ip.txt", "w") as f:
                f.write(f'IP地址: {i.strip()}--port端口号: {p.strip()}--地址:{a.strip()}\n')# .strip()方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值