又一个python web抓取应用程序

scrapemeagain的Python项目详细描述


Build StatusCoverage StatusPyPI versionCode style: black

刮测增益

scrapmeagain是一个python 3驱动的web scraper。它使用多线程(^{})和多处理来更快地完成工作,并将收集的数据存储在SQLite数据库中。

安装

pip install scrapemeagain

系统要求

TorPrivoxy一起用于匿名(即常规IP地址更改)。

使用DockerDocker Compose是 使用scrapmeagain。

如果不使用Docker,则必须在系统上手动安装和设置TorPrivoxy。有关安装和配置的详细信息,请参阅:

用法

您必须提供自己的数据库表描述和实际的scraper类,该类必须遵循BaseScraper接口。有关详细信息,请参见examples/examplescraper

停靠

使用Docker,可以同时使用多个ToR IP,除非滥用,否则可以更快地收集数据。

最简单的方法是复制examples/examplescraper,然后更新、重命名、扩展等scraper和相关类。

刮刀必须定义config.pymain_dockerized.py。这两个名称在整个代码库中都是硬编码的。

scrapemeagain-compose.py动态创建一个docker-compose.yml来编排scraper实例。其思想是,第一个scraper(scp1)是一个masterscraper,因此是通过http进行通信的两个helper服务的主机(请参见^{})。

  1. 获取Docker主机IP
ip addr show docker0

note您的docker接口名可能与docker0不同。

  1. 在Docker主机IP上运行examplesite
python3 examples/examplescraper/examplesite/app.py 172.17.0.1

note您的Docker主机IP可能与172.17.0.1不同。

  1. 开始docker-compose
scrapemeagain-compose.py -s $(pwd)/examples/examplescraper -c tests.integration.fake_config | docker-compose -f - up

注意提供了一个特殊的配置文件路径:-c tests.integration.fake_config。这是,仅用于测试/演示目的。您不必为实际/生产刮刀提供特定的配置。

局部

  1. 运行examplesite
python3 examples/examplescraper/examplesite/app.py
  1. 开始examplescraper
python3 examples/examplescraper/main.py

注意您可能需要更新PYTHONPATH,例如export PYTHONPATH=$PYTHONPATH:$(pwd)/examples

开发

使用最新更改简化运行集成测试:

  • image: scp:latest替换image: dusanmadar/scrapemeagain:x.y.zscrapemeagain/dockerized/docker-compose.yml模板中

  • 并确保在运行测试之前在本地重建图像,例如

docker build . -t scp:latest; python -m unittest discover -p test_integration.py

传统型

python 2.7版本的scrapmeagain也提供地理编码功能,可在legacy分支下使用,不再维护。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
http POST请求Java CouchDB   java删除带有大量尾随0的浮点字符串上的科学符号   JavaEE5和Hibernate   java如何在Spring Social中获得比特定id更早的tweet   java是框架。revalidate()在事件后获取输出是否重要?   java为什么不能返回通用映射?   java如何理解和优化工厂方法的高自时间   java Eclipse 202006错误由于项目的生成路径不完整,因此未生成该项目   多线程是java。util。向量序列化线程安全?   在Eclipse和java中使用不同的构建配置。属性文件   编译Java:从命令行运行的问题   java如何知道消息是否已确认/取消?   Java铸造一套   java Android Seekbar progress已更改变量,给出错误