技术心得记录:如何通过爬取西刺代理建立自己的代理池

简介: 技术心得记录:如何通过爬取西刺代理建立自己的代理池

最近正在筹划爬取一些大型网站的数据,因为预想到这些网站的反爬措施比较多。首先筹备建立自己的一个代理池,手工测试了一下国内的开源的免费代理,发现西刺代理的可用率比较高,今天就写一个爬虫,爬取西刺代理可用的代理池。


步骤是:


1.抓取西刺代理的网页文件


2.通过正则解析代理


3.通过访问baidu测试可用的代理


4.讲可用代理写入文本文件中


5.结合花刺代理使用


1 # -- coding: utf-8 --


2 import urllib.request


3 import urllib.parse


4 import re


5


6 def handle_request(url,page):


7 #拼接成指定页面的url


8 url = url + str(page)


9 print(url)


10 headers={


11 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36',


12 //代码效果参考:http://www.lyjsj.net.cn/wx/art_23725.html

}

13


14 #生成请求对象


15 request = urllib.request.Request(url=url,headers=headers)


16 return request


17


18 def parse_content(content):


19


20 pattern = re.compile(r'(\b(?:(?:25【0-5】|2【0-4】【0-9】|【01】?【0-9】【0-9】?).){3}(?:25【0-5】|2【0-4】【0-9】|【01】?【0-9】【0-9】?)\b).?(\d+).?.?.?(.*?)',re.S)


21 #通过正则处理,通过分组符号()得到一组元组的列表,元组中第一个元素是IP,第二个元素是端口,第三个元素室协议


22 lt = pattern.findall(content)


23


24 return lt


25


26 def test_agent(agent):


27 #使用百度测试代理


28 url = ""


29 headers={


30 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 //代码效果参考:http://www.lyjsj.net.cn/wz/art_23723.html

(KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36',

31 }


32 #拼接ip_port字段


33 ip_port = agent【0】+':'+agent【1】


34 #创建handler对象


35 handler = urllib.request.ProxyHandler({agent【2】:ip_port})


36 #创建opener对象


37 print("zheli")


38 opener = urllib.request.build_opener(handler)


39 #生成请求对象


40 try:


41 request = urllib.request.Request(url=url,headers=headers)


42 #发送请求,得到返回状态


43 try :


44 response = opener.open(request,timeout=10)


45 if response.getcode() == 200:


46 print("ip可用")


47 return True


48 else:


49 print("ip不可用")


50 return False


51 except Exception as e:


52 print(e)


53 except Exception as e:


54 print(e)


55


56


57


58 def main():


59 url = ''


60 start_page = int(input("请输入起始页:"))


61 end_page = int(input("请输入结束页;"))


62 for page in (start_page,end_page+1):


63 #获取请求对象


64 request = handle_request(url,page)


65


66 #获取网页文件


67 content = urllib.request.urlopen(request,timeout=10).read().decode()


68 #解析文件


69 lt = parse_content(content)


70 for agent in lt :


71 #测试代理是否能够被调用


72 if test_agent(agent) != False:


73 #第一个元素是IP


74 ip = agent【0】


75 #第二个元素是端口


76 port = agent【1】


77 #第三个元素是协议


78 protocal= agent【2】


79 #拼接成一行的字符串


80 string = '%s %s %s \n' %(ip,port,protocal)


81 #将字符串追加写到文件中


82 with open("ip_pool.txt","a") as fp:


83 fp.write(string)


84


85


86 #入口


87 if name =='main':


88 main()


89

相关文章
|
JavaScript
Vue引入字节跳动图标库
Vue引入字节跳动图标库
466 0
Vue引入字节跳动图标库
|
机器学习/深度学习
自己搭建代理IP池有哪些好处呢?
自己搭建代理IP池有哪些好处呢?
219 8
|
机器学习/深度学习 自然语言处理 数据处理
大模型开发:描述长短期记忆网络(LSTM)和它们在序列数据上的应用。
LSTM,一种RNN变体,设计用于解决RNN处理长期依赖的难题。其核心在于门控机制(输入、遗忘、输出门)和长期记忆单元(细胞状态),能有效捕捉序列数据的长期依赖,广泛应用于语言模型、机器翻译等领域。然而,LSTM也存在计算复杂度高、解释性差和数据依赖性强等问题,需要通过优化和增强策略来改进。
463 1
|
7月前
|
人工智能 API 开发者
FastAPI开发者福音!FastAPI-MCP:将FastAPI秒变MCP服务器的开源神器,无需配置自动转换!
FastAPI-MCP是一款能将FastAPI应用端点自动转换为符合模型上下文协议(MCP)的开源工具,支持零配置自动发现接口并保留完整文档和模式定义。
4208 112
FastAPI开发者福音!FastAPI-MCP:将FastAPI秒变MCP服务器的开源神器,无需配置自动转换!
|
NoSQL 数据可视化 关系型数据库
推荐几个好用的redis可视化工具
推荐几个好用的redis可视化工具
17627 1
|
人工智能 自然语言处理 搜索推荐
如何10分钟获得一位24小时AI专家助手?
进入百炼控制台创建应用,选通义千问-Plus为模型,可设定Prompt引导对话。测试后若发现不足,可进一步优化。获取API-KEY和应用ID以便API调用,实现网页集成。此AI助手能即时解答用户问题,提供个性化服务及推荐,有效提升用户体验与企业效率,同时降低成本并助力策略规划。随着AI技术进步,这类智能助手将成为日常生活的重要组成部分。
|
数据可视化 JavaScript 架构师
D3.js实战:数据可视化高级技巧实例应用
本文介绍了D3.js入门,包括创建HTML文件引入库、绘制简单线图、柱状图和饼图。示例展示了数据绑定、交互性和动画效果,如柱状图的悬停效果和线图的数据平滑过渡。此外,还提及力导向图和地图可视化的实现,以及使用Enter, Update, Exit模式进行动态更新。最后提到了复杂图表和高级技巧,如使用组件库、动画、交互性和性能优化。
565 0
|
存储 消息中间件 NoSQL
两万字长文让你彻底掌握 celery
两万字长文让你彻底掌握 celery
5993 3
|
UED C++ Python
GUI开发入门指南
GUI开发入门指南
|
网络安全 Python
使用代理ip后访问网站仍然被拒该怎么办
使用代理ip后访问网站仍然被拒该怎么办
430 6