太空/爬行者
是一个 PHP 包
弗里克·范德赫滕
用于使用 Guzzle Promise 并发抓取网站的工具。它最近更新到了版本 9,引入了新的功能。
CrawlResponse
对象、改进的作用域控制、测试工具等等。
主要特点包括:
- 通过闭包回调和观察者类处理爬虫事件
CrawlResponse具有类型化访问器的对象- 收集 URL 并控制抓取范围
- 测试
fake() - 和更多...
处理爬行事件
该爬虫支持两种处理爬取事件的方法:闭包回调和观察者类。闭包方法如下所示:
使用
太空爬行者
;使用
空间\爬行器\爬行响应
;爬行者
::
创造
(
'https://example.com'
)
->
爬取
(
功能
(
细绳
$url,
爬取响应
$response) {
回声
"{
$url
}: {
$响应
->
地位
()}
\n
“
;})
->
开始
();
这
onFailed()
和
onFinished()
处理程序遵循相同的模式来处理错误和爬取后逻辑。此外,还有
onWillCrawl()
这是在抓取 URL 之前调用的函数。
爬取响应
每个被抓取的 URL 都会提供一个
CrawlResponse
具有用于常见检查需求的类型化访问器的对象:
爬行者
::
创造
(
'https://example.com'
)
->
爬取
(
功能
(
细绳
$url,
爬取响应
$response) {
如果
($响应)
->
重定向
()){
回声
重定向自:
。
内爆
(
' → '
,$response
->
重定向历史记录
())
。
“
\n
“
;}$dom
=
$响应
->
dom
();
// Symfony DomCrawler 实例})
->
开始
();
该对象还暴露了
body()
,
header()
, 和
transferStats()
用于计时数据。
收集 URL 并控制范围
借助爬虫,您可以控制范围并收集 URL,而无需单独抓取每个链接。这在您想要抓取页面上的链接(甚至仅按内部链接筛选)并直接返回它们而无需处理时非常有用:
$urls
=
爬行者
::
创造
(
'https://example.com'
)
->
仅限内部使用
()
->
深度
(
3
)
->
找到的网址
();
测试
fake()
Spatie 的软件包中总是包含优秀的测试辅助工具,这款爬虫软件包也不例外。该软件包的
fake()
该方法允许您在不发出实际 HTTP 请求的情况下测试爬虫逻辑。传递一个 URL 到 HTML 字符串的映射表,爬虫程序会将这些映射表用作响应:
爬行者
::
创造
(
'https://example.com'
)
->
伪造的
([
'https://example.com/about'
=>
'关于页面'
,])
->
找到的网址
();
其他亮点
- 节流:
FixedDelayThrottle对于固定的请求延迟,AdaptiveThrottle根据服务器响应时间进行退避 retry(): 连接错误和 5xx 响应自动重试stream(): 选择加入式流媒体传输可减少大型爬虫作业的内存占用FinishReason枚举:start()回报Completed,CrawlLimitReached,TimeLimitReached, 或者Interrupted- JavaScript渲染:
A
JavaScriptRenderer与……的接口CloudflareRenderer包括和spatie/browsershot作为推荐司机 - 和更多
您可以在以下网址找到完整来源: 太空/爬行者 在 GitHub 上。






