酷站(www.ku0.com)-致力于为互联网从业者提供动力!

热门关键词:  企业  as  baidu  c4rp3nt3r  美女
阿里云爆款特惠,精选爆款产品低至0.55折

python爬虫利用代理池更换IP的方法

来源:转载 作者:秩名 人气: 发布时间:2021-02-21
本篇文章主要介绍了python爬虫利用代理池更换IP的方法,对大家的学习或者工作具有一定的参考学习价值,感兴趣的小伙伴们可以参考一下,也感谢大家对酷站(ku0.com)的支持。

周日在爬一个国外网站的时候,发现用协程并发请求,并且请求次数太快的时候,会出现对方把我的服务器IP封掉的情况。于是网上找了一下开源的python代理池,这里选择的是star数比较多的proxy_pool

1. 安装环境

# 安装python虚拟环境, python环境最好为python3.6,再往上的话,安装依赖时会报错
sudo apt update
sudo apt install python3.6
pip3 install virtualenv
virtualenv venv --python=python3.6
source venv/bin/activate

# 安装redis
sudo apt install redis-server
# 启动redis server
redis-server
 

2. 安装依赖
 
 
git clone https://github.com/jhao104/proxy_pool.git
cd proxy_pool
pip install -r requirements.txt
 

3. 修改配置文件
 
 
# 修改setting.py

# 配置API服务

HOST = "0.0.0.0"    # IP
PORT = 5010     # 监听端口

# 配置数据库

# 以下为三个示例,根据redis的配置,选择其中一种即可
# 一般启动redis时如果没有配置文件,那么选择第一种即可
# 1. Redis IP: 127.0.0.1 Port: 6379
DB_CONN = 'redis://@127.0.0.1:6379'
# 2. Redis IP: 127.0.0.1 Port: 6379 Password: 123456
DB_CONN = 'redis://:123456@127.0.0.1:6379'
# 3. Redis IP: 127.0.0.1 Port: 6379 Password: 123456 DB: 15
DB_CONN = 'redis://:123456@127.0.0.1:6379/15'

 

# 配置 ProxyFetcher

PROXY_FETCHER = [
 "freeProxy01",  # 这里是启用的代理抓取方法名,所有fetch方法位于fetcher/proxyFetcher.py
 "freeProxy02",
 # ....
]

4. 启动

# 可以用tmux开三个窗口

# 启动调度程序
python proxyPool.py schedule

# 启动webApi服务
python proxyPool.py server
 

5. 测试
 
import requests

def 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 code

def 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
 

版权声明:本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 959677720#qq.cn(#换@) 举报,一经查实,本站将立刻删除。
原文链接:https://blog.csdn.net/qq_35056292/article/details/109752522

相关文章

  • matplotlib grid()设置网格线外观

    matplotlib grid()设置网格线外观

    grid()函数概述 grid() 函数用于设置绘图区网格线。 grid() 的函数签名为 matplotlib.pyplot.grid(b=None, which=major, axis=both, **kwargs) 。 grid() 的参数如下: b :是否显示网格线。布尔值或 None ,可选参数。如果没有关键字参......
    02-23
  • python爬虫利用代理池更换IP的方法

    python爬虫利用代理池更换IP的方法

    周日在爬一个国外网站的时候,发现用协程并发请求,并且请求次数太快的时候,会出现对方把我的服务器IP封掉的情况。于是网上找了一下开源的python代理池,这里选择的是star数比较多的 proxy_pool 1. 安装环境 # 安装python虚拟环境, pyt......
    02-21
  • Flask处理Web表单的实现

    Flask处理Web表单的实现

    web表单是web应用程序的基本功能。 它是HTML页面中负责数据采集的部件。表单有三个部分组成:表单标签、表单域、表单按钮。表单允许用户输入数据,负责HTML页面数据采集,通过表单将用户输入的数据提交给服务器。 在Flask中,为了处理web......
    01-31
  • flask框架中的cookie和session使用介绍

    flask框架中的cookie和session使用介绍

    文章介绍了flask框架中的cookie和session。Session是在服务器端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中。Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一......
    01-31
  • 用pushplus+python监控亚马逊到货动态推送微信

    用pushplus+python监控亚马逊到货动态推送微信

    xbox series和ps5发售以来,国内黄牛价格一直居高不下。虽然海外amazon上ps5补货很少而且基本撑不过一分钟,但是xbox series系列明显要好抢很多。 日亚、德亚的xbox series x/s都可以直邮中国大陆,所以我们只需要借助脚本,监控相关网页......
    01-29
  • Python实现随机爬山算法的详解

    Python实现随机爬山算法的详解

    随机爬山是一种优化算法。它利用随机性作为搜索过程的一部分。这使得该算法适用于非线性目标函数,而其他局部搜索算法不能很好地运行。它也是一种局部搜索算法,这意味着它修改了单个解决方案并搜索搜索空间的相对局部区域,直到找到局部......
    01-29
  • Python爬虫获取op.gg英雄联盟英雄对位胜率

    Python爬虫获取op.gg英雄联盟英雄对位胜率

    主要思路 op.gg网站 网站以出场率高低排名,并且列出对位胜率,在高出场率的前提下,胜率有很大的参考意义,在counter位很有帮助 通过开发者工具找到对应部位源码,发现数据就在源码中,证明这是一个静态数据,确定使用BeautifulSoup库。......
    01-29
  • Python利用socket模块开发简单的端口扫描工具

    Python利用socket模块开发简单的端口扫描工具

    一、socket 1.简介 Socket又称套接字,应用程序通常通过套接字向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯。 socket的工作流程 socket 采用C/S 模式,分为服务端和客户端 服务端数据处理流程 创建socket ......
    01-27
  • 使用Python进行PDF图片识别OCR

    使用Python进行PDF图片识别OCR

    使用图片识别可以快速提取图片中的信息,方便高效。 Python并不能直接对PDF进行识别,所以如果是识别PDF的话,需要先将PDF转化为图片,然后再进行识别。 必备工具 Python 可以安装3.7及以上版本 tesseract-ocr 下载地址:https://github.......
    01-22
  • Python实现石头剪刀布游戏的代码

    Python实现石头剪刀布游戏的代码

    利用随机函数制作石头剪刀布小游戏 程序只运行一次 import randoma = input(请出拳(石头/剪刀/布):)b = [剪刀, 石头, 布]# 定义赢的列表win_list = [[石头, 剪刀], [剪刀, 布], [布, 石头]]# 计算机随机选择出拳mac = random.choice(b)p......
    01-21

最新更新