mihaeu/tarantula

基于Guzzle的另一个PHP爬虫。

安装: 49

依赖者: 0

建议者: 0

安全: 0

星标: 14

关注者: 3

分支: 0

开放问题: 1

语言:HTML

v1.3.0 2014-07-06 20:07 UTC

This package is auto-updated.

Last update: 2024-09-04 18:12:55 UTC


README

Build Status Coverage Status SensioLabsInsight

Tarantula是一个用PHP编写的网络爬虫。它利用了Guzzle和Symfony的DomCrawler团队所做的不凡工作。

安装

全局工具

请确保~/.composer/bin已添加到您的$PATH,然后只需执行

composer global require mihaeu/tarantula:1.*

假设您正在使用Composer,请将以下内容添加到您的composer.json文件中

{
    "require": {
        "mihaeu/tarantula": "1.*"
    }
}

或者使用Composer的命令行工具composer require mihaeu/tarantula:1.*

使用方法

全局工具

目前可用的唯一命令是crawl。一些使用示例包括

# most basic use case
tarantula crawl "http://google.com"

# go deeper
tarantula crawl "http://products.com/categories" --depth=4

# mirror
tarantula crawl "http://myblog.com" --mirror=/tmp/blog-backup

# filters
tarantula crawl "http://myblog.com" --contains=yolo
tarantula crawl "http://myblog.com" --regex="(post)\|(\d+)"

# dump crawled file in hashed files
tarantula crawl "http://myblog.com" --save-hashed=/tmp/blog-backup --minify-html

# HTTP basic auth
tarantula crawl "http://secure.com" --user=admin --password=admin

# search for "Avatar" on imdb
bin/tarantula crawl "http://www.imdb.com/find?q=avatar&s=all" --depth=0 --quiet --css=".findSection td.result_text"

# today's weather in seattle
bin/tarantula crawl --depth=0 "http://www.weather.com/weather/today/Seattle+WA+USWA0395:1:US" --css=".wx-first" | head -n 2

使用help命令获取所有参数和选项

tarantula help                    # displays all available commands
tarantula help crawl              # all arguments and options for the crawler
tarantula crawl "..." --verbose   # switch on debugging output

查看测试以了解可能的内容,或者只需在您的代码中尝试以下内容

use Mihaeu\Tarantula\Crawler;
use Mihaeu\Tarantula\HttpClient;

$crawler = new Crawler(new HttpClient('http://google.com'));
$links = $crawler->go(1);

所有HTTP请求都通过Guzzle进行,并且您可以将任何配置添加到Guzzle的请求对象中,以及到Tarantula的HttpClient

测试

测试覆盖率不是100%,原因是这是一个下午的项目,并且由于测试设置,测试爬虫需要大量时间。

如果您想快速了解项目,我建议使用--testdox标志运行测试套件

vendor/bin/phpunit --testdox

待办事项

  • 过滤器(URL、文件类型等)
  • 允许通过命令行配置Guzzle
  • 更多操作(保存纯结果、通过DOM/XPath爬取...)

故障排除

Composer全局安装失败

这很可能是由于与其他全局安装的一些要求冲突造成的。不幸的是,Composer的架构尚未提供解决方案。我尽量使Tarantula的要求宽松,以避免这个问题。

如果您想在您的系统中使用Tarantula,只需将其安装到另一个目录(例如,使用composer create-project),然后将bin/tarantula符号链接到您的$PATH中的一个文件夹。

感谢

许可

MIT,请参阅LICENSE文件。