爬行网站的库
http-crawler的Python项目详细描述
http crawler是一个用于对网站进行爬网的库。它使用requests来讲http。
用法
http_crawler模块提供一个生成器函数crawl。
crawl通过url调用,并生成requests的^{tt4}$类的实例。
crawl将请求给定url处的页面,并从响应中提取所有url。然后,它将对这些url中的每一个发出请求,并重复该过程,直到它请求了从原始url域的页面链接到的每个url为止。它不会从与原始url具有不同域的任何页面提取或处理url。
例如,这就是使用crawl查找和记录站点上任何断开的链接的方法:
>>> fromhttp_crawlerimportcrawl>>> forrspincrawl('http://www.example.com'):>>> ifrsp.status_code!=200:>>> print('Got {} at {}'.format(rsp.status_code,rsp.url))
crawl有许多选项:
- follow_external_links(默认值True)如果设置,crawl将对它遇到的每个url发出请求,包括与原始url具有不同域的url。如果未设置,crawl将忽略与原始url具有不同域的所有url。在这两种情况下,crawl都不会从具有不同域的页面中提取更多的url到原始url。
- ignore_fragments(默认值True)如果设置,crawl将忽略任何url的片段部分。这意味着,如果crawl遇到http://domain/path#anchor,它将请求http://domain/path。而且,这意味着如果crawl遇到http://domain/path#anchor1和http://domain/path#anchor2,它将只发出一个请求。
- verify(默认值True)此选项控制ssl证书验证的行为。有关详细信息,请参见requests documentation。
动机
为什么是另一个爬行图书馆?当然有很多python工具可以用来抓取网站,但我所能找到的要么太复杂,要么太简单,要么有太多的依赖关系。
http crawler被设计为library and not a framework,因此在应用程序或其他库中使用应该很简单。
贡献
在issue tracker上有一些增强,对于那些希望第一次为开源做出贡献的人来说是合适的。
有关发出拉取请求的说明,请参见GitHub’s guide。
所有贡献都应该包括100%代码覆盖率的测试,并且应该符合PEP 8。该项目使用tox来运行测试和检查代码质量度量。
运行测试:
$ tox