前言
这篇文章介绍了如何使用 Python 爬虫技术获取代理IP并保存到文件中。通过使用第三方库 requests 发送HTTP请求,并使用 lxml 库解析HTML,我们可以从多个网页上获取IP、Port和地址信息。本文将逐步解析代码的每一部分,帮助读者更好地理解爬虫的工作原理。
导入依赖库
import requests
from lxml import etree
requestslxml
打开文件准备写入数据
with open('IP代理.txt','w',encoding='utf-8') as f:
openf'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')
ihttp://www.66ip.cn/{i}.html{i}print
headers
requestsheadersresp
'gbk'
elxmletree.HTML
ipsportsaddrs
zipforfwrite'IP地址:{i}----port端口号:{p}-----地址:{a}\n'
'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进行数据采集、反爬虫处理或其他网络爬虫应用非常有用。希望本文能够帮助您更好地理解爬虫的工作原理,并在实际项目中发挥作用。