美文网首页
python 爬虫使用scylla项目作为代理ip池

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

作者: LittleTrue | 来源:发表于2019-03-06 02:03 被阅读0次

    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 版本中加入)
    • 最少仅用一行代码即可与 Scrapyrequests 进行集成
    • 无头浏览器(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。


    图片.png
    获取项目的代理ip:
    curl获取
    curl http://api.ipify.org -x http://127.0.0.1:8081
    
    图片.png
    集成在request项目中
    requests.get('http://api.ipify.org', proxies={'http': 'http://127.0.0.1:8081'})
    
    图片.png

    相关文章

      网友评论

          本文标题:python 爬虫使用scylla项目作为代理ip池

          本文链接:https://www.haomeiwen.com/subject/ehlzuqtx.html