python 爬虫使用scylla项目作为代理ip池

scylla github
scylla 中文手册

配置环境概诉:

windos10
python 3
node.js -- npm环境


后话前说

除了pip安装还有两种方式

(一)、基于官方文档的方式三+正向代理服务器功能

基于官方文档的方式三下载完整项目在本地运行, 并使用curl和request集成的正向代理服务器功能获取代理ip,

实际发现, 方式三+ 正向代理服务器虽然能够成功获取代理ip , 但是大部分代理ip不能用, 所以最终改为windos下docker部署并接口获取代理ip
巨坑, 请跳过下面有关 方式三+ 正向代理服务器 的配置

(二)、官网方式一(docker部署) + API接口

使用docker部署, 接口方式获取代理ip

推荐使用这种方式, 但本人 (一) 配置失败后发现ip可用性不高就放弃了scylla, 所以没再继续配置下去


scylla 简介

scylla 是一款高质量的免费代理 IP 池工具,仅支持 Python 3.6。特性如下:

  • 自动化的代理 IP 爬取与验证
  • 易用的 JSON API
  • 简单但美观的 web 用户界面,基于 TypeScript 和 React(例如,代理的地理分布)
  • 最少仅用一条命令即可启动
  • 简明直接的编程 API(将在 1.1 版本中加入)
  • 最少仅用一行代码即可与 Scrapy 和 requests 进行集成
  • 无头浏览器(headless browser crawling)爬虫

注意: 暂不支持https

(一)、scylla完整项目部署+正向代理服务器功能

由于本人使用方式二,pip安装时自动部署一个附属组件pycurl时出错:

Command "python setup.py egg_info" failed with error code 10 in C:\Users\Public\Documents
\Wondershare\CreatorTemp\pip-install-2vh3p5oi\pycurl\

墙内墙外都找遍了也没有解决方案, 所以以下讨论方式三、通过github下载整个项目, 修改其requirements.txt文件使其不再自动部署pycurl避免出错, 运行该项目从而搭建本地正向代理ip池。

前置工作:
升级pip和setuptools工具。
pip install --upgrade setuptools
python -m pip install --upgrade pip
手动下载pycurl组件包:

这一步主要是因为在windos上安装scylla 都会在自动下载pycurl上出错, 我们这里先将其手动下载并安装。下载地址: 插件库中选pycurl 64版本最新一个
下载后将文件放到python安装目录(如果是虚拟环境, 则为虚拟环境的Scripts目录),和pip.exe同一目录

然后使用pip 安装

//cd 到pip.exe和下载文件都在的python安装目录
//如果是虚拟环境, 则为虚拟环境的python安装目录
cd C:\Users\LittleTrue\AppData\Local\Programs\Python\Python37\
//然后使用pip 安装
pip install  [下载第三方模块的文件名] //我下载的是pycurl-7.43.1-cp37-cp37m-win_amd64.whl

提示successfull则安装pycurl成功, 能够避免scylla 自动安装时失败。

按照scylla 中文手册

下载并构建项目:
git clone https://github.com/imWildCat/scylla.git
cd scylla
//在scylla下requirements.txt文件修改pycurrl版本为你前置工作中下载并安装的版本
pip install -r requirements.txt
npm install 
make build-assets //本步不执行则访问不了部署在本地的web界面, 但是curl和正向代理访问获取依然可以获取代理ip
运行项目:
cd 到scylla项目
python -m scylla
//python3 -m scylla

服务运行在本地(localhost),使用口号 8899。
每次运行本项目时,需要等待 1~2 分钟以爬取一定量的代理 IP。


python 爬虫使用scylla项目作为代理ip池_第1张图片
图片.png
获取项目的代理ip:
curl获取
curl http://api.ipify.org -x http://127.0.0.1:8081
python 爬虫使用scylla项目作为代理ip池_第2张图片
图片.png
集成在request项目中
requests.get('http://api.ipify.org', proxies={'http': 'http://127.0.0.1:8081'})
python 爬虫使用scylla项目作为代理ip池_第3张图片
图片.png

你可能感兴趣的:(python 爬虫使用scylla项目作为代理ip池)