我用以下脚本抓取Google排名:
<?php
include("phpQuery-onefile.php");
$url = "https://www.google.com/search?hl=en&output=search&start=1&q=shoes";
$ch = curl_init($url);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$page = curl_exec($ch);
curl_close($ch);
$doc = phpQuery::newDocument($page);
echo $doc['#ires cite'];
?>
我从Google Snippet(标题下方的绿色)中获取了URL地址。他使用了一个名为phpQuery的库来自动执行该过程。我搜索ID为#ires的Div中的所有“引证”。
这很完美,问题始于移动版本:
<?php
include("phpQuery-onefile.php");
$url = "https://www.google.com/search?hl=en&output=search&start=1&q=shoes";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Linux; Android 7.1; Mi A1 Build/N2G47H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.83 Mobile Safari/537.36');
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$page = curl_exec($ch);
curl_close($ch);
$doc = phpQuery::newDocument($page);
echo $doc['#ires cite'];
?>
我将Android代理添加到Curl,Google展示了具有不同样式的移动版本。标题下方没有显示地址,但该地址以类似面包屑的格式显示。
我可以检查位置,但不能存储完整的URL,所以我必须从href中获取它。
那是我的问题,我无法获得完整的网址,有人可以帮助我吗?
我留下了Google移动版页面的一段源代码。 (摘要)
预先感谢
<div>
<a class="C8nzq BmP5tf" href="/url?sa=t&source=web&rct=j&url=https://m.6pm.com/shoes&ved=2ahUKEwjIn8mcosDgAhXxwVkKHT1gDF04ARAWMAB6BAgFEAE&usg=AOvVaw1j59lxT1UHTjMA9CBFqgkQ" oncontextmenu="google.ctpacw.cm(this)">
<div aria-level="3" role="heading" class="MUxGbd v0nnCb">Shoes on Sale | 6pm</div>
<div class="zbELhe MUxGbd lyLwlc aLF0Z">
<span class="qzEoUe">https://m.6pm.com › shoes</span>
</div>
</a>
</div>