mihaeu / tarantula
基于Guzzle的另一个PHP爬虫。
v1.3.0
2014-07-06 20:07 UTC
Requires
- php: >=5.3.3
- guzzle/guzzle: 3.*
- symfony/console: 2.*
- symfony/css-selector: 2.*
- symfony/dom-crawler: 2.*
- symfony/filesystem: 2.*
- symfony/process: 2.*
- zaininnari/html-minifier: *
Requires (Dev)
- johnkary/phpunit-speedtrap: dev-master
- phpunit/phpunit: 4.*
- satooshi/php-coveralls: ~0.6
This package is auto-updated.
Last update: 2024-09-04 18:12:55 UTC
README
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
中的一个文件夹。
感谢
- Symfony/SensioLabs,尤其是Fabien Potencier,他为PHP所做的一切(对于这个特定的项目是DomCrawler)
- Guzzle团队,他们出色的HTTP客户端
- Aha Soft为标志设计
- Composer团队,他们革命性地改变了我和许多其他人编写PHP的方式
- GitHub,它重新定义了协作
- Travis CI,它提高了数以千计的开源项目质量和兼容性
- Sebastian Bergmann,他为PHPUnit和其他许多出色的QA工具做出了贡献
许可
MIT,请参阅LICENSE
文件。