hashbangcode/sitemap_checker

一个用于下载、解析和爬取sitemap.xml文件的PHP库。

0.11.0 2024-02-24 21:59 UTC

This package is auto-updated.

Last update: 2024-09-24 23:32:42 UTC


README

一个用于下载、解析和爬取sitemap.xml文件的PHP库。

如果sitemap.xml文件被gzip压缩,则文件将被解压,并读取内容。

PHP Composer

安装

将PHP文件下载到目录中并运行composer install。这将设置应用程序运行所需的所有内容。

用法

在命令行中运行应用程序使用以下命令。

php application.php sitemap-checker:run https://www.example.com/sitemap.xml

这将下载sitemap.xml文件,在开始爬取之前告知它检测到的URL数量。

您还可以使用缩写来运行相同的命令

php application.php sc:run https://www.example.com/sitemap.xml

一旦爬取完成,命令将打印出结果。

选项

此工具存在多个选项。

结果输出

要更改返回的结果类型,您可以提供--result-file选项,或使用短选项-r

以下渲染类型可用

  • 纯文本,默认渲染器(逐行打印结果)。
  • CSV
  • JSON
  • XML
  • HTML

例如,要将结果输出为csv,可以提供如下选项。

php application.php sc:run -r results.csv https://www.example.com/sitemap.xml

这将自动触发csv结果渲染路径,并将结果渲染为csv文件。

如果没有设置此选项,工具将使用“纯文本”渲染将结果打印到命令行。

限制

--limit选项(或短选项-l)仅防止工具检查超过此限制的数量。

例如,这将只处理10个结果,无论找到多少URL。

php application.php sc:run -l 10 https://www.example.com/sitemap.xml

引擎

--engine选项(或短选项-e)更改使用的检查引擎类型。

选项包括

  • 'guzzle' : (默认) 使用Guzzle承诺运行sitemap检查器。
  • 'chrome' : 使用无头Chrome运行sitemap检查器。要运行此功能,您首先需要将chrome二进制文件添加到位置./chrome/chrome(即在包内部)。

例如,要将sitemap检查器引擎更改为使用无头Chrome,请使用以下命令。

php application.php sc:run -e chrome https://www.example.com/sitemap.xml

排除

使用--exclude标志(或短选项-x)传递要排除的URL列表。这将阻止URL被添加到集合并检查。这可以是一系列要排除的URL的逗号分隔列表。也可以使用通配符来防止使用某些内部URL。

一些示例

防止使用路径https://www.example.com/some-page

php application.php sc:run https://www.example.com/ --exclude='https://www.hashbangcode.com/some-page.html'

防止使用https://www.example.com/sub-dir1https://www.example.com/sub-dir2中的任何内容

php application.php sc:run https://www.example.com/ --exclude='https://www.example.com/sub-dir1/*,https://www.hashbangcode.com/sub-dir2/*'

防止使用外部站点https://www.example2.org上的任何内容。

php application.php sc:run https://www.example.com/ --exclude='https://www.example2.org/*'

Robots

使用--robots标志(或短选项-t)将robots.txt文件传递给脚本。这将下载并解析robots.txt文件,将其解析为一系列排除规则。

php application.php sc:run https://www.example.com/ --robots='https://www.example.org/robots.txt'

请注意,robots.txt解析器只会使用为User-agent字符串*创建的规则。

此选项可以与排除标志一起使用,以添加到爬虫排除规则。

测试

运行./vendor/bin/phpunit以运行phpunit测试。所有Web请求都在单元测试中模拟。

运行composer run test-coverage以运行单元测试并生成代码覆盖率报告。此报告添加到应用程序根目录下的.build目录。

对于覆盖率报告,您需要将以下内容添加到您的xdebug.ini配置文件中。

xdebug.mode=coverage

使用类示例

要将类从本项目提取出来独立使用,请执行以下操作。

<?php

use Hashbangcode\SitemapChecker\Crawler\GuzzlePromiseCrawler;

require __DIR__ . '/vendor/autoload.php';

// Set the engine up.
$client = new \GuzzleHttp\Client();
$crawler = new \Hashbangcode\SitemapChecker\Crawler\GuzzleCrawler();
$crawler->setEngine($client);

// Create a URL.
$url = new \Hashbangcode\SitemapChecker\Url\Url('https://www.hashbangcode.com/');

// Crawl a single URL.
$result = $crawler->processUrl($url);

// Print result object.
print_r($result);

待办事项

还有很多事情要做。

  • 添加自动下载Chrome二进制文件的方式。
  • 研究使用数据库或消息队列。
  • 添加Docker容器来封装应用程序。
  • 批量处理URL(即不要一次性完成所有操作)。
  • 为应用程序选择更好的名称。
  • 添加添加会话cookie以进行认证爬取的能力。