ip代理免费(ip代理免费软件pc)
作者:仙焕
来源:Python技术
经常有粉丝在后台留言,问:大哥,你的爬虫运行时怎么报错了?
我让他把错误信息发给我,他看了之后叹了口气。
大部分粉丝就是拿着代码开始跑,然后等结果。他们根本没有仔细阅读和理解源代码。遇到错误,他们直接过来问。
爬虫源代码报告的大部分错误都是由于频繁访问目标网站,导致目标网站出现错误或无数据返回。
目前大部分网站都有反抓取措施。如果在一定时间内,IP请求数量超过一定阈值,就会触发反抓取措施,拒绝访问,也就是我们常说的“屏蔽IP”。
那么如何解决这个问题呢?
一种解决方法是减少访问频率,一次访问后等待一定时间,然后再次访问。这种方法对于防爬措施不严的网站是有效的。
如果遇到防爬措施严格的网站,访问次数多了还是会被屏蔽。有时你需要抓取数据。这种解决方案会使数据采集周期特别长。
第二个解决方案是使用代理IP。我不断切换IP访问,让目标网站以为是不同的用户在访问,从而绕过反抓取措施。这也是最常见的方式。
那么,我们就面临一个问题:哪里有那么多独立的IP地址?
当然,最便捷的方式还是花钱买服务。这种付费IP一般都是稳定可靠的。
今天就来说说不花钱免费获得代理IP的方法。
ProxyPool简介
ProxyPool是crawler的代理IP池。其主要功能是定期收集网上发布的免费代理进行验证入库,定期验证入库代理,保证代理的可用性。它提供了API和CLI使用模式。
同时还可以拓展代理来源,增加代理池IP的质量和数量。
获取项目
我们可以通过两种方式获得ProxyPool项目。
第一种是通过命令行下载:
git克隆git @ github . com:jhao 104/proxy _ pool . git
第二种是下载相应的zip压缩包:
安装依赖性
我们得到项目后,转到项目的根目录,运行下面的代码,安装项目所需的依赖包:
pip安装-r要求. txt
修改配置文件
为了在本地运行项目,我们需要为本地环境修改一些配置。打开项目中的setting.py文件,并根据本地环境和要求修改配置。
# setting.py 为项目配置文件# 配置API服务HOST = "0.0.0.0" # IPPORT = 5000 # 监听端口# 配置数据库DB_CONN = 'redis://:pwd@127.0.0.1:8888/0'# 配置 ProxyFetcherPROXY_FETCHER = [ "freeProxy01", # 这里是启用的代理抓取方法名,所有fetch方法位于fetcher/proxyFetcher.py "freeProxy02", # ....]
主要修改的配置是监听端口、Redis数据库的配置(DB_CONN)和启用的代理方法名(PROXY_FETCHER)。
启动一个项目
修改完配置,我们就可以愉快的使用了。
这个项目一般分为两部分:抓取代理IP和访问代理IP。
如果要启用搜索代理IP的服务,请直接运行以下命令:
python proxyPool.py计划
启动后,您可以看到以下控制台信息:
该计划将抓取每隔一段时间,直到有一定数量的可用IP在我们的IP池。
实际上,作者在这个项目中使用的是从一些免费代理网站收集IP,然后测试IP的可用性。如果可用,它将存储在Redis中,如果不可用,它将被丢弃。
所以你可以自己写程序来实现这个逻辑。
使用代理IP
要使用代理IP,您需要启动webApi服务:
python代理池. py服务器
web服务启动后,默认会启动http://127.0.0.1:5010的api服务:
如果想在爬虫代码中使用,可以把这个api打包成一个函数,直接使用,例如:
import requestsdef get_proxy(): return requests.get("http://127.0.0.1:5010/get/").json()def delete_proxy(proxy): requests.get("http://127.0.0.1:5010/delete/?proxy={}".format(proxy))# your spider codedef getHtml(): # .... retry_count = 5 proxy = get_proxy().get("proxy") while retry_count > 0: try: html = requests.get('http://www.example.com', proxies={"http": "http://{}".format(proxy)}) # 使用代理访问 return html except Exception: retry_count -= 1 # 删除代理池中代理 delete_proxy(proxy) return None
摘要
作为一个学习使用的IP代理池,这个项目是够用的,但是对于一些复杂的爬虫项目或者商业项目来说,可能会有相当的难度。毕竟这个爬行免费代理的质量肯定不怎么样,不稳定很正常。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。系信息发布平台,仅提供信息存储空间服务。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。
本文来自网络,若有侵权,请联系删除,作者:李楠,如若转载,请注明出处: