刮网器框架
alcazar的Python项目详细描述
alcazar是一个python库,它简化了编写web scraper的任务。
它的一些核心功能是:
- 简洁的语法用于在html页面、json文档、文本字符串中查找相关数据
- http缓存到磁盘以便在不重新提交http请求的情况下准确重播擦痕
- 限制对同一主机的请求
- 当http请求失败或页面无法按预期解析时,自动重试。
- crawler用于维护要访问的url队列的工具
- fail fast:默认情况下,我们宁愿崩溃,也不愿保存不正确或不完整的数据
Alcazar汇集了以下库:
入门
alcazar是available on PyPi,因此可以使用pip
:
pip install alcazar
使用库的最简单方法是实例化一个Scraper
,并调用它的fetch
方法:
>>>importalcazar>>>scraper=alcazar.Scraper()>>>page=scraper.fetch('https://en.wikipedia.org/wiki/Gorgie')>>>print(page.one('div[@id="toc"]/preceding-sibling::p[./b]').text.normalized)Gorgie(/ˈɡɔːrɡiː/GOR-gee)isadenselypopulatedareaofEdinburgh,Scotland.ItislocatedinthewestofthecityandbordersMurrayfield,ArdmillanandDalry.
在这段代码中:
- 我们已获取该页的HTML
- 如果发生任何网络错误或http错误,我们将重试几次,每次尝试之间的睡眠时间都会增加
- 我们已将HTML解析为树
- 使用lxml的出色处理和从“坏”html中恢复,如在wild中所见
- 我们已经找到了我们感兴趣的元素
- 这里使用的是xpath表达式,但我们也可以使用css选择器
- 我们检查了是否只有一个元素与我们的查询匹配
- 否则就会抛出一个异常,确保我们只捕获所需的内容
- 我们提取了它的文本,删除了它的所有标记,并规范化了它的空白
查看samples
目录了解alcazar的工作原理。