shamanhead/phpporser

高级解析器,用于高级任务

v0.3 2021-06-09 17:40 UTC

This package is auto-updated.

Last update: 2024-09-10 00:46:19 UTC


README

  • 入门指南
    • 需求
    • 通过composer安装
    • 通过存档安装
    • 安装chromium可执行文件
  • 解析第一页
  • 搜索方法
  • 处理文本
  • 贡献
  • 许可证

入门指南

需求

需要 PHP 7.1+。

此外还需要 Headless Chromium PHP 和 chromium可执行文件,如果您想使用此库支持无头浏览(包含在Packagist版本中)。

通过composer安装

$ composer require shamanhead/phpporser

通过存档安装

您也可以从存档中安装此库,通过从GitHub下载。除了 Headless Chromium PHP 之外,无需任何依赖项,如果您想使用此库的无头浏览功能。安装chromium可执行文件如果您想使用此库与无头浏览器一起使用,首先需要下载此浏览器的可执行文件。

这可能适用于Windows、MacOs和Linux。

选择您想要使用的浏览器

无头chromium支持所有基于Chrome的浏览器,如Chrome、Opera、Chromium等。

安装chromium可执行文件

我建议使用chromium而不是chrome,因为我的观察表明它比chrome表现更好。

因此,前往 官方chromium浏览器下载页面 并下载。

完成此步骤后,解压缩存档并将其移动到必要的位置。

然后,在您的脚本中指定路径

require_once "vendor/autoload.php";

use HeadlessChromium\Page;

use ShamanHead\PhpPorser\App\Dom as Dom;

$dom = new Dom();
$dom->setHref('file:///home/shamanhead/dev/porser/phpporser-master/test.html');
$dom->setBrowserPath('PATH_TO_CHROME');

如果您正确完成,解析器将工作。如果您在此步骤中遇到任何错误,您可以查看这里,是否有解决您问题的方法。否则,请在此或Headless Chromium PHP 页面上打开新问题。

解析第一页

呃,工作完成了一半。那么现在,让我们尝试解析一个简单的页面,比如维基百科上的计算机科学。通过它,我将展示解析器的所有功能。

首先,让我们尝试获取页面顶部上的'Computer sciense'字符串

<?php

require_once "vendor/autoload.php";

use ShamanHead\PhpPorser\App\Dom as Dom;

$dom = new Dom();
$dom->setHref('https://en.wikipedia.org/wiki/Computer_science');

print_r($dom->tag('h1')->class('firstHeading')->text()->merge());

?>

它工作了!但是如何?让我来解释一下

  1. 解析器获取所有名为'h1'的标签
  2. 然后解析器获取h1标签范围内所有带有'class' 'firstHeading'的标签及其依赖项
  3. 从中获取文本
  4. 将结果数组转换为字符串格式

搜索方法

为了在HTML DOM中查找元素,此库中有4个函数
<?php

require_once "vendor/autoload.php";

use ShamanHead\PhpPorser\App\Dom as Dom;

$dom = new Dom();
$dom->setHref('href to file');

print_r($dom->tag('h1')->array()); //finds by tag name 'h1'
print_r($dom->id('firstHeading')->array()); //finds by id name 'firstHeading'
print_r($dom->class('wrapper__main')->array()); //finds by class name 'wrapper_main'
print_r($dom->custom(['name', 'button'])->array()); //finds by 'name' attribute value 'button'

?>

您可以组合搜索方法,以特殊方式查找元素

<?php

require_once "vendor/autoload.php";

use ShamanHead\PhpPorser\App\Dom as Dom;

$dom = new Dom();
$dom->setHref('href to file');

print_r($dom->class('main')->id('firstHeading')->tag('h1')->array());

?>

处理文本

<?php

require_once "vendor/autoload.php";

use ShamanHead\PhpPorser\App\Dom as Dom;

$dom = new Dom();
$dom->setHref('href to file');

$divText = $dom->tag('div')->id('someDiv')->text();

$divText->contents(); //Returns all text in array form.

$divText->merge('symbol'); //Returns all text in string form with 'symbol' separator
                          //'\n' by default.

$divText->first(); //Returns first founded text.

$divText->last(); //Returns last founded text.

?>

贡献

嘿,想贡献吗?只需通过我的邮箱(arsenii.romanovskii85@gmail.com)通知我,说明你想如何帮助。

许可证

请参阅LICENSE文件。