刮网器框架

alcazar的Python项目详细描述


Build StatusPyPI version

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的工作原理。

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

推荐PyPI第三方库


热门话题
java数组。按字符串排序   如何使用Netbeans设置Java打印的页面大小   java有没有一种方法可以获取sparkjava/嵌入式jetty服务器的主线程执行器?   正则表达式Java正则表达式:需要更简单的解决方案   无法使用java解析XML   MySQL Java JDBC:如何获取自动递增列的名称?   java错误:“限定符必须是表达式”Android Studio   Spring+java。lang.NoClassDefFoundError:weblogic/logging/LogEntryFormatter   java将JList插入GridLayout   listview中的java Get selected复选框   使用CriteriaBuilder的java JPA左外部联接会导致错误:不允许部分对象查询维护缓存或进行编辑   java循环双链接列表addToHead和print   java更好地检测三角形按钮(libgdx)   java ConcurrentHashMap迭代保证人   java如何获取控制台。通过webdriver记录信息?   java Javafx阶段为空   java如何使用apachetika从excel文件中访问空白单元格   java使用SQlite数据库列填充AutoCompleteTextView   java如何在不使用idea构建整个maven项目的情况下运行主方法?