Amipy
Python微型异步爬虫框架(A micro asynchronous Python website crawler framework)
基于Python 3.5 + 的异步async-await 框架,搭建一个模块化的微型异步爬虫。可以根据需求控制异步队列的长度和延迟时间等。配置了可以去重的布隆过滤器,网页内容正文过滤等,完全自主配置使用。
GitHub地址:源码
适用环境
windows 7 +
Python 3.5 +
安装
直接使用pip安装即可:
pip install amipy
基础命令
1.查看当前路径下的可用命令,在DOS命令行下输入:
>amipy
会出现命令帮助界面。
2.创建一个新的项目,在DOS命令行下输入:
>amipy cproject myproject
会在当前路径下创建一个Amipy爬虫项目myproject。如果想要创建在指定目录下,可以加上附加参数,-d,如:
> amipy cproject myproject -d D:\somefolder
项目myproject便会在路径D:somefolder下创建。
项目的目录结构应该如下:
--myproject
|-spiders
| |-__init__.py
|-__init__.py
|-settings.py
其中:
settings.py 为整个项目的配置文件,可以为整个项目下的爬虫安装共有的中间件,控制整个项目的请求并发数,设置日志级别、文件路径等。
3.进入项目路径,创建一个新的爬虫,在DOS命令行下输入:
>amipy cspider myspider
此时在项目myproject目录下的spiders文件夹中会创建一个爬虫目录myspider,此时的项目结构为:
--myproject
|-spiders
| |-__init__.py
| |-myspider
| | |-__init__.py
| | |-cookies.info
| | |-item.py
| | |-settings.py
| | |-site_record.info
| | |-spider.py
| | |-url_record.info
|-__init__.py
|-settings.py
|-log.log
其中:
位于myspider文件夹下的settings.py为爬虫myspider的配置文件,该配置只对当前爬虫有效。可以对该爬虫的布隆过滤器进行配置,安装中间件等。
cookies.info 为爬虫的请求cookie保存文件,该爬虫爬过的所有网站的cookie会保存进该文件。可以通过爬虫配置文件settings.py进行路径加载和保存。
site_record.info 为爬虫爬取过的网站的布隆过滤器记录文件,方便下次爬取的时候加载,会把爬取过的网站自动去掉。防止重复爬取。
url_record.info 为该爬虫发出的请求url+headers+method+数据的去重后集合,爬虫结束运行时,如果配置保存去重url集合。下次爬取时加载该文件可以自动过滤爬取过的所有url+headers+method+数据。
item.py 为ORM的MongoDB数据集合对象,对应的类属性可以映射到数据库集合中的字段,类名为数据表名。
spider.py 为当前爬虫的主要文件,自己编写爬取逻辑,提取规则和数据保存脚本等。
4.运行项目下的所有爬虫,进入项目路径,在DOS命令行下输入:
>amipy runproject
则该项目下的所有爬虫会开始运行,如果不想运行某个爬虫,只需要加上参数 -e,如:
>amipy runproject -e No1spider No2spider
则名为“No1spider”、“No2spider”的爬虫均不会运行。
5.运行指定的爬虫,进入项目路径,在DOS命令行下输入:
>amipy runspider myspider01
则名为“myspider01”的爬虫便会被启动。可以加上多个爬虫名称,用空格隔开即可。
6.列出当前项目下的所有爬虫信息。在DOS命令行下输入:
>amipy list
便会将当前项目下的所有爬虫信息列出。
使用
Amipy爬虫编写流程
编写自己的爬虫。【假设你已经安装前面"基础命令"创建了一个项目,并且创建了一个爬虫名为myspider】只需要进入myspider文件夹,按照需求修改当前爬虫的配置settings.py 以及数据存储需要用到的表模型item.py编写,编辑文件spider.py,加入爬取规则逻辑等。
Url类对象
Url类对象是一个规则匹配类,它提供了许多种模式的url规则匹配。
比如:
from amipy import Url
# 表示匹配到正则模式'http://www.170mv.com/song.*'的所有链接
Url(re=