爬虫-ip代理
代理(proxy)
-
代理服务器:实现请求转发,从而可以实现更换请求的ip地址
-
代理的匿名度:
- 透明:服务器知道你使用了代理并且知道你的真实ip
- 匿名:服务器知道你使用了代理,但是不知道你的真实ip
- 高度匿名(高匿):服务器不知道你使用了代理,更不知道你的真实ip
-
代理的类型:
- http:该类型的代理只可以转发http协议的请求
- https:只可以转发https协议的请求
-
requests请求中更换ip:
在requests添加一个参数 proxies={'http/https':'ip:port'}
import requests headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36' } url = 'https://www.baidu.com/s?wd=ip' #proxies={'http/https':'ip:port'} page_text = requests.get(url=url,headers=headers,proxies={'https':'1.197.203.187:9999'}).text with open('ip.html','w',encoding='utf-8') as fp: fp.write(page_text)
-
免费代理ip的网站
- 快代理
- 西祠代理
- goubanjia
- 代理精灵(推荐):http://http.zhiliandaili.cn/
-
在爬虫中遇到ip被禁掉如何处理?
- 使用代理
- 构建一个代理池
- 拨号服务器
-
代理池构建
#基于代理精灵构建一个ip池 from lxml import etree all_ips = [] # 列表形式的代理池 proxy_url = 'http://t.11jsq.com/index.php/api/entry?method=proxyServer.generate_api_url&packid=1&fa=0&fetch_key=&groupid=0&qty=52&time=1&pro=&city=&port=1&format=html&ss=5&css=&dt=1&specialTxt=3&specialJson=&usertype=2' # 代理ip地址 proxy_page_text = requests.get(url=proxy_url,headers=headers).text tree = etree.HTML(proxy_page_text) proxy_list = tree.xpath('//body//text()') for ip in proxy_list: dic = {'https':ip} all_ips.append(dic) all_ips import random #爬取西祠代理中的免费代理ip url = 'https://www.xicidaili.com/nn/%d' free_proxies = [] for page in range(1,30): new_url = format(url%page) page_text = requests.get(new_url,headers=headers,proxies=random.choice(all_ips)).text tree = etree.HTML(page_text) tr_list = tree.xpath('//*[@id="ip_list"]//tr')[1:]#xpath表达式中不可以出现tbody for tr in tr_list: ip = tr.xpath('./td[2]/text()')[0] port = tr.xpath('./td[3]/text()')[0] t_type = tr.xpath('./td[7]/text()')[0] dic = { 'ip':ip, 'port':port, 'type':t_type } free_proxies.append(dic) print('第{}页爬取完毕!!!'.format(page)) print(len(free_proxies))
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类