我们通常会在网页中对目标网页进行爬取,为了避免爬取目标网页的后台服务器,对我们实施封锁IP的操作。我们可以每发送一次网络请求更换一个IP,从而降低被发现的风险。其实在获取免费的代理IP之前,需要先找到提供免费代理IP的网页,然后通过爬虫技术将大量的代理IP提取并保存至文件当中。以某免费代理IP网页为例,实现代码如下:
01 import requests # 导入网络请求模块
02 from lxml import etree # 导入HTML解析模块
03 import pandas as pd # 导入pandas模块
04 ip_list = [] # 创建保存ip地址的列表
05
06 def get_ip(url,headers):
07 # 发送网络请求
08 response = requests.get(url,headers=headers)
09 response.encoding = 'utf-8' # 设置编码方式
10 if response.status_code == 200: # 判断请求是否成功
11 html = etree.HTML(response.text) # 解析HTML
12 # 获取所有带有IP的li标签
13 li_all = html.xpath('//li[@]')
14 for i in li_all: # 遍历每行内容
15 ip = i.xpath('span[@]/text()')[0] # 获取ip
16 port = i.xpath('span[@]/text()')[0] # 获取端口
17 ip_list.append(ip+':'+port) # 将ip与端口组合并添加至列表当中
18 print('代理ip为:', ip, '对应端口为:', port)
19 # 头部信息
20 headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
21 'AppleWebKit/537.36 (KHTML, like Gecko) '
22 'Chrome/72.0.3626.121 Safari/537.36'}
23 if __name__ == '__main__':
24 ip_table = pd.DataFrame(columns=['ip']) # 创建临时表格数据
25 for i in range(1,5):
26 # 获取免费代理IP的请求地址
27 url = 'https://www.dieniao.com/FreeProxy/{page}.html'.format(page=i)
28 get_ip(url,headers)
29 ip_table['ip'] = ip_list # 将提取的ip保存至excel文件中的ip列
30 # 生成xlsx文件
31 ip_table.to_excel('ip.xlsx', sheet_name='data')
程序代码运行后控制台将显示如图1所示的代理ip与对应端口,项目文件中将自动生成“ip.xlsx”文件,文件内容如图2所示。

注意:如果以上示例代码运行出错,读者可以参考以上示例代码的学习思路,然后爬取其它免费代理IP的网页。
今天的技能你get√了吗?想学习更多关于网络爬虫的硬核技能,推荐大家学习《Python网路爬虫从入门到实践》:全彩印刷,书中全面细致的讲解了关于Python网络爬虫开发所需的基础知识及核心技术,通过知识讲解→快速示例→综合应用→实战项目,四位一体的方式进行讲解,循序渐进,由浅入深,让大家快速达到理解和应用的目的,同时还设有技术交流群,图书作者和技术老师会在统一时间在线答疑哦~
全彩印刷,每满100减50,店铺首页领券更划算哦~
点我购买:《Python网络爬虫从入门到实践》

End
目前100000+人已关注加入我们


点击阅读原文
进入明日科技京东自营店↓↓↓

5145

被折叠的 条评论
为什么被折叠?



