2upmedia/scout

灵活、结构化的抓取

0.2.1 2015-07-07 07:04 UTC

This package is not auto-updated.

Last update: 2024-09-28 18:05:21 UTC


README

Build Status Scrutinizer Quality Score Code Coverage Latest Stable Version Dependency Status

Scout 是一个易于使用且快速的抓取器,它使用您对 PHP 的了解来以您想要的方式转换数据,而无需学习其他转换语言,如 XSLT。

目前处于稳定测试阶段,我鼓励提交有关错误、反馈和想法的工单。

当前支持

  • 文档类型:HTML 和 XML
  • 查询:XPath
  • PHP 5.4+,包括 PHP 7!

未来计划

  • 保存到 JSON、CSV 和 XML 文件
  • 支持使用 CSS 选择器进行查询
  • 支持查询 JSON
  • 能够持久化信息并跟踪原子更改

可能的用途

  • 跟踪搜索排名
  • 间谍竞争对手的网站
  • 抓取优惠券网站
  • 抓取您的聚合网站所需的网站
  • 将数据从大型静态网站迁移到 CMS 中
  • 从广泛的在线工作板中获得您感兴趣的工作列表
  • 将您的 Web 服务响应的 XML 转换为 JSON
  • 任何其他涉及将 XML/HTML 转换为您想要的 数据结构 的事情。

咨询

如需咨询,请联系 jorge@2upmedia.com

示例

<?php

$queryHandler = new Xpath(Html::parseDocument(file_get_contents('./tests/fixtures/header-and-table.html')));

$titlesAndPrices = (new DataPoint())->setQueryHandler($queryHandler);

$data = $titlesAndPrices
    ->setCollection('//table/tr')
    ->forKey('title')->set('./td[1]') // each tr is used as a context, so the key selectors should use "." to be relative to it
    ->forKey('price')->set('./td[2]')
    ->getData();
/*
    array (
      0 => 
      array (
        'title' => 'Title #1',
        'price' => '$10.00',
      ),
      1 => 
      array (
        'title' => 'Title #2',
        'price' => '$23.20',
      ),
      2 => 
      array (
        'title' => 'Title #3',
        'price' => '$1.00',
      ),
      3 => 
      array (
        'title' => 'Title #4',
        'price' => '$5.00',
      ),
    )
*/

有关如何使用 API 的更多信息,请参阅 集成测试

XPath 入门

目前使用 XPath 作为查询语言。XPath 在练习了一段时间后很容易使用。

XPath 的核心是 "路径"。如果您理解文件路径和 URL,您已经理解了 XPath 的一半。

学习语法: https://w3schools.org.cn/xpath/xpath_syntax.asp。然后查看 XPath 入门示例