Php 获取纯HTML/标签
我有一个cronjob,我想周期性地检查我的一个站点中的某个标记/类-使用guzzlehttp池。到目前为止,我有以下代码:Php 获取纯HTML/标签,php,get,guzzle,simple-html-dom,guzzlehttp,Php,Get,Guzzle,Simple Html Dom,Guzzlehttp,我有一个cronjob,我想周期性地检查我的一个站点中的某个标记/类-使用guzzlehttp池。到目前为止,我有以下代码: $oClient = new Client(['expect' => false]); foreach ($aDomains as $iDomainKey => $oDomain) { array_push($aCreatedRequests, new Request('G
$oClient = new Client(['expect' => false]);
foreach ($aDomains as $iDomainKey => $oDomain)
{
array_push($aCreatedRequests, new Request('GET', $oDomain));
}
$pool = new Pool($oClient, $aCreatedRequests,
[
'concurrency' => 50,
'options' => ['timeout' => 10],
'fulfilled' => function ($response, $index) use (&$aAcceptedResponse)
{
$json = json_decode((string)$response->getBody()->getContents());
},
'rejected' => function ($reason, $index) use(&$aRejectedResponses)
{
$aRejectedResponses[] = $index;
},
]);
$promise = $pool->promise();
$promise->wait();
这确实给了我HTML(但速度非常慢),而且它似乎只是在循环中,还下载了我网站上所有的狗屎库/框架——如上所述,我只需要HTML,所以我可以使用简单的HTML\U dom来查找我的标记/类。我已经阅读了一些guzzle文档(这让我达到了这一点)-但我似乎无法进一步-我的谷歌忍者技能也不能让我进一步。
所以我在这里问;他们有什么合适的方法可以让我这样做吗?因此,在经过了相当长的时间后,我试图解决这个问题——我偶然发现了一些有效的方法
$oClient = new Client(['expect' => false]);
$aAcceptedResponse = [];
$aRejectedResponses = [];
foreach ($aDomains as $iDomainKey => $oDomain)
{
array_push($aCreatedRequests, new Request('GET', $oDomain));
}
$pool = new Pool($oClient, $aCreatedRequests,
[
'concurrency' => 50,
'options' => ['timeout' => 10],
'fulfilled' => function ($response, $index) use (&$aAcceptedResponse)
{
$aAcceptedResponse[$index] = $response->getBody()->getContents();
// $json = json_decode((string)$response->getBody()->getContents());
},
'rejected' => function ($reason, $index) use(&$aRejectedResponses)
{
$aRejectedResponses[] = $index;
},
]);
$promise = $pool->promise();
$promise->wait();
foreach($aAcceptedResponse as $iTest => $sHTLM)
{
$simpleHTMLDom = str_get_html($sHTLM);
echo '<pre>';
print_r(count($simpleHTMLDom->find('.td-icon-star')));
echo '</pre>';
}
$oClient=新客户端(['expect'=>false]);
$aaAcceptedResponse=[];
$aRejectedResponses=[];
foreach($aDomains作为$iDomainKey=>$oDomain)
{
数组_push($aCreatedRequests,newrequest('GET',$oDomain));
}
$pool=新池($oClient,$aCreatedRequests,
[
“并发性”=>50,
'选项'=>['超时'=>10],
“已完成”=>函数($response,$index)使用(&$aAcceptedResponse)
{
$aAcceptedResponse[$index]=$response->getBody()->getContents();
//$json=json_解码((字符串)$response->getBody()->getContents());
},
“拒绝”=>函数($reason,$index)使用(&$aRejectedResponses)
{
$aRejectedResponses[]=$index;
},
]);
$PROMITE=$pool->PROMITE();
$promise->wait();
foreach($AAAcceptedResponse as$iTest=>$sHTLM)
{
$simpleHTMLDom=str\u get\u html($sHTLM);
回声';
打印(计数($simpleHTMLDom->find('.td图标星'));
回声';
}