我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何在python中使用proxybroker构建一个爬虫免费IP代理池

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何在python中使用proxybroker构建一个爬虫免费IP代理池

今天就跟大家聊聊有关如何在python中使用proxybroker构建一个爬虫免费IP代理池,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

python可以做什么

Python是一种编程语言,内置了许多有效的工具,Python几乎无所不能,该语言通俗易懂、容易入门、功能强大,在许多领域中都有广泛的应用,例如最热门的大数据分析,人工智能,Web开发等。

ProxyBroker安装

你可以通过pip来安装ProxyBroker

pip install proxybroker

也可以直接从Github下载最新版本的ProxyBroker

pip install -U git+https://github.com/constverum/ProxyBroker.git

在终端使用ProxyBroker

安装成功后,你可以在终端中使用命令proxybroker

如何在python中使用proxybroker构建一个爬虫免费IP代理池

proxybroker主要有三个子命令

find子命令

find子命令用于查找并检查公开的代理IP,换言之它会列出所有经测试可用的代理IP

下列是find子命令的常用选项:

选项作用可选值示例
--types指定代理的类型HTTP,HTTPS,SOCKS4,SOCKS5,CONNECT:80,CONNECT:25--types HTTP HTTPS
--lvl指定代理的匿名级别Transparent,Anonymous,High--lvl High
--strict,-s严格保证代理的类型与匿名级别等于指定的值只要加上就表示启用严格模式--strict
--countries COUNTRIES,-c COUNTRIES指定代理IP的所属国家US,CN...-c CN
--limit LIMIT, -l LIMIT指定获取的条数正整数即可-l 5
--outfile OUTFILE, -o OUTFILE将找到的代理保存到文件中文件路径--outfile ./proxies.txt
--format FORMAT, -f FORMAT指定输出的格式,默认值为defaultdefault,json-f json
--post用post请求检查IP的可用性,默认是用get方式只要加上就表示启用post请求检查--post
--show-stats是否打印详细统计信息只要加上就表示启用打印统计信息--show-stats

比如查找10条HTTP代理

proxybroker find --types HTTP -l 10

如何在python中使用proxybroker构建一个爬虫免费IP代理池

你可以将选项的示例值加上,自己尝试一下

grab子命令

grab子命令有点像find的简易版,它只进行查找,并不检查抓来IP的可用性

下列是grab子命令的所有选项:

选项作用可选值示例
--countries COUNTRIES,-c COUNTRIES指定代理IP的所属国家US,CN...-c CN
--limit LIMIT, -l LIMIT指定获取的条数正整数即可-l 5
--outfile OUTFILE, -o OUTFILE将找到的代理保存到文件中文件路径--outfile ./proxies.txt
--format FORMAT, -f FORMAT指定输出的格式,默认值为defaultdefault,json-f json
--show-stats是否打印详细统计信息只要加上就表示启用打印统计信息--show-stats

可以看到它有的选项,find子命令都有,所以它是find的阉割版

比如查找5条来自中国的代理,并将它保存至文件中

proxybroker grab -c CN -o ./proxies.txt -l 5

如何在python中使用proxybroker构建一个爬虫免费IP代理池

serve子命令

serve子命令用于搭建一个本地代理服务器,它可以分发你的请求至不同的IP代理中

下列是serve子命令的常用选项:

选项作用可选值示例
--host HOST指定服务器的地址,默认是127.0.0.1你本机的IP--host localhost
--port PORT指定服务器的端口,默认是8888你本机可用的端口--port 5000
--max-tries SRV_MAX_TRIES设置处理请求的最大重试次数正整数--max-tries 3
--min-req-proxy MIN_REQ_PROXY设置每个IP处理请求的最小次数正整数--min-req-proxy 3
--http-allowed-codes HTTP_ALLOWED_CODES设置允许代理返回的响应码响应的状态码--http-allowed-codes 302
--max-error-rate MAX_ERROR_RATE设置最大允许请求的异常率,例如0.5是50%0~1--max-error-rate 0.3
--max-resp-time SECONDS设置响应的最大允许秒数,默认是8秒秒数--max-resp-time 20
--prefer-connect如果可以的话,是否使用CONNECT方法只要加上就表示使用--prefer-connect
--backlog BACKLOG设置连接队列的最大值正整数即可--backlog 10
----
--types指定代理的类型HTTP,HTTPS,SOCKS4,SOCKS5,CONNECT:80,CONNECT:25--types HTTP HTTPS
--lvl指定代理的匿名级别Transparent,Anonymous,High--lvl High
--strict,-s严格保证代理的类型与匿名级别等于指定的值只要加上就表示启用严格模式--strict
--countries COUNTRIES,-c COUNTRIES指定代理IP的所属国家US,CN...-c CN
--limit LIMIT, -l LIMIT指定代理池的工作IP条数正整数即可-l 5

serve子命令搭建代理服务器,相当于把我们本机变成中间商再中间商

比如在地址为localhost,端口为5000,搭起高匿名代理服务器

proxybroker serve --host localhost --port 5000 --types HTTP --lvl High

如何在python中使用proxybroker构建一个爬虫免费IP代理池

然后先通过curl命令不使用代理访问一下http://httpbin.org/get这个地址,查看一下该网站显示我们的IP是多少

curl http://httpbin.org/get

如何在python中使用proxybroker构建一个爬虫免费IP代理池

再使用curl命令通过我们刚搭起的代理服务器访问一下,看看网站显示的IP是否有变化

curl --proxy http://localhost:5000 http://httpbin.org/get

如何在python中使用proxybroker构建一个爬虫免费IP代理池

在代码中使用ProxyBroker

你可以通过proxybroker serve子命令搭起代理服务器,然后在发起请求时使用该代理,这种方法适用于几乎所有的编程语言

requests库使用代理

先serve搭起代理服务器

proxybroker serve --host localhost --port 5000 --types HTTP --lvl High

然后通过requests库设置代理

import requestsproxies = {  "http": "http://localhost:5000",  "https": "http://localhost:5000"}res = requests.get('http://httpbin.org/get', proxies=proxies)print(res.json())

效果如下

如何在python中使用proxybroker构建一个爬虫免费IP代理池

scrapy库使用代理

还是先serve搭起代理服务器,代码还是和上面一样

在终端中,通过scrapy startproject新建一个爬虫项目,然后进入该项目目录里

scrapy startproject proxy_democd proxy_demo

通过scrapy genspider新建一个爬虫,名为proxy_spider_demo,域名为httpbin.org

scrapy genspider proxy_spider_demo httpbin.org

然后将下列代码粘贴至刚刚新建的爬虫中

import jsonimport scrapy# from scrapy.downloadermiddlewares.httpproxy import HttpProxyMiddlewareclass ProxySpiderDemoSpider(scrapy.Spider):  name = 'proxy_spider_demo'  allowed_domains = ['httpbin.org']  # start_urls = ['http://httpbin.org/']  def start_requests(self):    meta = dict(proxy='http://localhost:5000')    # 请求三次该网址,查看IP是否不同    for _ in range(3):      # 得加上dont_filter=True,否则第2、3个请求将被dupefilter过滤      # 请求可以通过meta携带代理服务器地址,与HttpProxyMiddleware下载器中间件配合达到代理请求的目的      yield scrapy.Request('http://httpbin.org/get', dont_filter=True, meta=meta, callback=self.parse)  def parse(self, response):    json_body = json.loads(response.text)    print('当前请求的IP为:', json_body['origin'])

在项目根目录处进入终端,通过scrapy crawl命令运行爬虫,这里加上了--nolog选项是为了专注于print的输出

scrapy crawl --nolog proxy_spider_demo

效果如下

如何在python中使用proxybroker构建一个爬虫免费IP代理池

python异步获取代理IP

如果不希望通过serve子命令,直接在python代码中使用代理IP,可以通过asyncio来异步获取代理IP

直接上代码

import asynciofrom proxybroker import Brokerasync def view_proxy(proxies_queue):  while True:    proxy = await proxies_queue.get()        if proxy is None:      print('done...')      break          print(proxy)# 异步队列proxies_queue = asyncio.Queue()broker = Broker(proxies_queue)tasks = asyncio.gather(  # 使用grab子命令获取3条IP  broker.grab(limit=3),  view_proxy(proxies_queue))loop = asyncio.get_event_loop()_ = loop.run_until_complete(tasks)

如何在python中使用proxybroker构建一个爬虫免费IP代理池

获取到代理IP后,你可以通过aiohttp异步HTTP库或requests库来使用它们

看完上述内容,你们对如何在python中使用proxybroker构建一个爬虫免费IP代理池有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网行业资讯频道,感谢大家的支持。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何在python中使用proxybroker构建一个爬虫免费IP代理池

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何在python中使用proxybroker构建一个爬虫免费IP代理池

今天就跟大家聊聊有关如何在python中使用proxybroker构建一个爬虫免费IP代理池,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。python可以做什么Python是一种编程
2023-06-06

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录