首页 > 编程语言 >【玩转python系列】【小白必看】使用Python爬虫技术获取代理IP并保存到文件中

【玩转python系列】【小白必看】使用Python爬虫技术获取代理IP并保存到文件中

时间:2023-10-18 16:05:41浏览次数:43  
标签:Python python IP resp headers HTML text requests

在这里插入图片描述

前言

这篇文章介绍了如何使用 Python 爬虫技术获取代理IP并保存到文件中。通过使用第三方库 requests 发送HTTP请求,并使用 lxml 库解析HTML,我们可以从多个网页上获取IP、Port和地址信息。本文将逐步解析代码的每一部分,帮助读者更好地理解爬虫的工作原理。

导入依赖库

在这里插入图片描述

import requests
from lxml import etree

导入 requests 库用于发送 HTTP 请求,以及 lxml 库用于解析 HTML。

打开文件准备写入数据

在这里插入图片描述

with open('IP代理.txt','w',encoding='utf-8') as f:

使用 open 函数创建文件对象 f,指定文件名为 'IP代理.txt',以写入模式打开文件。编码方式设置为 'utf-8'

循环爬取多个页面

在这里插入图片描述

for i in range(1,10):
    url = f'http://www.66ip.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/78.0.3904.70 Safari/537.36'
    }
    resp = requests.get(url,headers = headers)
    resp.encoding ='gbk'
    e = etree.HTML(resp.text)
    ips = e.xpath('//div[1]/table//tr/td[1]/text()')
    ports = e.xpath('//div[1]/table//tr/td[2]/text()')
    addrs = e.xpath('//div[1]/table//tr/td[3]/text()')

    for i,p,a in zip(ips,ports,addrs):
        f.write(f'IP地址:{i}----port端口号:{p}-----地址:{a}\n')

该部分代码使用循环爬取了多个页面的代理信息。循环变量 i 的范围是从 1 到 9。对于每个页面,首先构造了完整的 URL:http://www.66ip.cn/{i}.html,其中 {i} 是页面的页码。然后,使用 print 函数打印出正在获取的页面 URL。

接下来,为了伪装自己的浏览器,定义了一个 headers 字典,包含了浏览器的 User-Agent 信息。

通过 requests 库发送 GET 请求,使用 headers 字典中的 User-Agent 信息。得到的响应内容保存在 resp 变量中。

设置响应的编码为 'gbk',因为目标网站使用的是 GBK 编码。

将响应内容解析成可操作的 HTML 对象,赋值给变量 e,使用的是 lxml 库的 etree.HTML 函数。

通过 XPath 表达式,从 HTML 对象中提取出 IP、Port 和地址的列表。IP 列表存储在 ips 中,Port 列表存储在 ports 中,地址列表存储在 addrs 中。

使用 zip 函数将三个列表一一对应地打包在一起,然后使用 for 循环遍历打包后的数据。在循环中,使用文件对象 fwrite 方法将每一条代理信息写入文件,写入格式为 'IP地址:{i}----port端口号:{p}-----地址:{a}\n'

整个代码的作用是爬取多个网页中的 IP、Port 和地址信息,并将结果保存在名为 'IP代理.txt' 的文件中。

完整代码

import requests
from lxml import etree

# 定义保存结果的文件
with open('IP代理.txt', 'w', encoding='utf-8') as f:
    # 循环爬取多个页面
    for i in range(1, 10):
        # 构造完整的URL
        url = f'http://www.66ip.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/78.0.3904.70 Safari/537.36'
        }

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

        # 设置响应的编码为GBK
        resp.encoding = 'gbk'

        # 解析HTML
        e = etree.HTML(resp.text)

        # 提取IP、Port和地址信息
        ips = e.xpath('//div[1]/table//tr/td[1]/text()')
        ports = e.xpath('//div[1]/table//tr/td[2]/text()')
        addrs = e.xpath('//div[1]/table//tr/td[3]/text()')

        # 将提取的代理信息写入文件
        for ip, port, addr in zip(ips, ports, addrs):
            f.write(f'IP地址:{ip}----port端口号:{port}-----地址:{addr}\n')

运行效果

在这里插入图片描述

结束语

通过本文介绍的Python爬虫技术,您可以轻松地获取代理IP并保存到文件中。这对于需要使用代理IP进行数据采集、反爬虫处理或其他网络爬虫应用非常有用。希望本文能够帮助您更好地理解爬虫的工作原理,并在实际项目中发挥作用。

标签:Python,python,IP,resp,headers,HTML,text,requests
From: https://blog.51cto.com/u_14522592/7918897

相关文章

  • 【玩转Python系列】【小白必看】使用Python爬取双色球历史数据并可视化分析
    前言本文介绍了如何使用Python编程语言获取双色球历史数据,并使用数据可视化工具Matplotlib绘制了红球数量的折线图。通过对双色球历史数据的分析,我们可以更好地了解双色球的开奖规律和趋势。导入库importrequestsfromlxmlimportetreeimportcsvimportmatplotlib.pypl......
  • 【玩转Python系列【小白必看】Python多线程爬虫:下载表情包网站的图片
    前言本文主要介绍了使用Python编写的多线程爬虫程序,用于下载表情包网站上的图片。通过解析网页内容和使用XPath定位,可以获取到图片的URL,并将其保存到本地。1.导入模块和库importrequestsfromlxmlimportetreefromthreadingimportThreadfromqueueimportQueueim......
  • 【python】Python tkinter库实现重量单位转换器的GUI程序
    前言这段代码是一个简单的重量单位转换器的GUI程序,使用了Python的tkinter库来创建图形界面。该程序可以将输入的重量从千克转换为克、磅和盎司,并通过三个文本框分别显示转换后的结果。学到什么?使用tkinter库创建一个GUI窗口。tkinter是Python标准库中的一个模块,用于......
  • 【Python】Python 实现猜单词游戏——挑战你的智力和运气!
    前言大家好!欢迎来到我们精心准备的文字游戏世界。今天,我将向大家介绍一款有趣而又考验智力的游戏——猜单词游戏。在游戏中,你将面临一个神秘的单词,你需要凭借自己的智慧和运气来猜测这个单词是什么。每猜错一次,你将失去一条生命线,当生命线用尽时,你将面临失败。但只要你成功猜对了......
  • JavaScript高级程序设计(第3版)pdf电子版Nicholas C. Zakas
    JavaScript高级程序设计(第3版)pdf电子版作者:[美]NicholasC.Zakas原作名:ProfessionalJavaScriptforWeb出版年:2012-3-29ISBN:9787115275790链接提取码:jz6rJavaScript最基础的书籍。......
  • curl cip.cc 查看本机地址 ip
    curlcip.ccIP:13.16.3.9地址:中国广东深圳运营商:电信数据二:广东省深圳市|电信数据三:中国广东省深圳市|电信URL:http://www.cip.cc/113.116.83.99翻译搜索复制......
  • VMware 虚拟机 Ubuntu 系统没有IP地址 解决:UP BROADCAST MULTICAST 问题【转】
    转自:https://blog.csdn.net/a262624/article/details/95792665几周没使用虚拟机,今天打开的时候发现启动网络就是5分钟,然后还没有ip。百度了下找到了解决办法:  在我的VMware 虚拟机软件里面有许多Ubuntu系统的虚拟机,并且它们都是使用一段时间,就会出现没有IP地址的问题。我一......
  • 2023.10.13NOIPSIM3总结
    T1卡牌赛时打了一个\(\Omicron(nm)\)的暴力,拿到30分。我们发现第\(i\)张牌对BOSS造成的伤害为$att_i*\lceil\frac{hp_i}{Att}\rceil$,那么考虑以卡牌血量值域为下标开一个桶,储存相同血量的卡牌的\(\sumatt\)。对于每一级BOSS的攻击力,我们都可以在桶上根据\(\lceil......
  • ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?
    CentOS7pyenv安装Python3.10.13报错yuminstall-yopenssl-developenssl11-developenssl11-libCPPFLAGS="-I/usr/include/openssl11"LDFLAGS="-L/usr/lib64/openssl11-lssl-lcrypto"pyenvinstall-v3.10.13[root@Chatglm2-6B~]#pyenvversi......
  • Python Traceback:异常信息定位
    一、traceback模块简介traceback模块是Python标准库中的一个模块,提供了一些函数和类,用于获取和处理异常的跟踪信息。它可以帮助我们定位异常信息所在的代码位置,从而更好地调试和修复程序。 二、获取异常跟踪信息1.traceback.format_exc()函数在异常处理中,我们经常需要获取......