Python使用requests xpath 并开启多线程爬取西刺代理ip实例

发布时间:2026-09-28 17:18:18 浏览次数:1

在本文中,我们将介绍如何使用Python的requests和xpath库爬取西刺代理IP,并开启多线程提高爬取效率。我们将使用requests库发送HTTP请求,并使用xpath库解析HTML文档,以实现爬取代理IP的功能。

1. 爬取代理IP

首先,我们需要爬取西刺代理IP的网站。我们可以使用requests库发送GET请求,获取代理IP的网站。以下是一个示例,演示如何爬取西刺代理IP的网站:

import requestsfrom lxml import etree# 代理IP的URLurl = 'https://www.xicidaili.com/nn/'# 发送GET请求response = requests.get(url)# 解析HTML文档html = etree.HTML(response.text)trs = html.xpath('//table[@id="ip_list"]/tr')# 遍历所有代理IPfor tr in trs[1:]:    ip = tr.xpath('./td[2]/text()')[0]    port = tr.xpath('./td[3]/text()')[0]    print(f'{ip}:{port}')

在上面的示例中,我们使用requests库发送GET请求,获取代理IP的网站。我们使用xpath库解析HTML文档,并使用xpath表达式获取代理IP和端口号。我们使用循环遍历所有代理IP,并将其打印出来。

2. 开启多线程

接下来,我们需要开启多线程提高爬取效率。我们可以使用Python的threading库开启多线程。以下是一个示例,演示如何开启多线程爬取西刺代理IP:

import requestsfrom lxml import etreeimport threading# 代理IP的URLurl = 'https://www.xicidaili.com/nn/'# 线程数thread_num = 10# 爬取代理IP的函数def crawl_proxy():    # 发送GET请求    response = requests.get(url)    # 解析HTML文档    html = etree.HTML(response.text)    trs = html.xpath('//table[@id="ip_list"]/tr')    # 遍历所有代理IP    for tr in trs[1:]:        ip = tr.xpath('./td[2]/text()')[0]        port = tr.xpath('./td[3]/text()')[0]        print(f'{ip}:{port}')# 开启多线程threads = []for i in range(thread_num):    t = threading.Thread(target=crawl_proxy)    threads.append(t)    t.start()# 等待所有线程结束for t in threads:    t.join()

在上面的示例中,我们使用Python的threading库开启了多线程。我们定义了一个函数crawl_proxy,用于爬取代理IP。我们使用循环创建多个线程,并将它们添加到threads列表中。我们使用start方法开启线程,并使用join方法等待所有线程结束。

总结

本文介绍了如何使用Python的requests和xpath库爬取西刺代理IP,并开启多线程提高爬取效率。我们使用requests库发送HTTP请求,并使用xpath库解析HTML文档,以实现爬取代理IP的功能。我们还使用Python的threading库开启多线程,提高爬取效率。这些方法可以帮助我们快速爬取代理IP,提高爬取效率。

需要做网站?需要网络推广?欢迎咨询客户经理 13272073477