发布时间:2026-09-28 17:18:18 浏览次数:1
在本文中,我们将介绍如何使用Python的requests和xpath库爬取西刺代理IP,并开启多线程提高爬取效率。我们将使用requests库发送HTTP请求,并使用xpath库解析HTML文档,以实现爬取代理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,并将其打印出来。
接下来,我们需要开启多线程提高爬取效率。我们可以使用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,提高爬取效率。