Я очищаю рейтинг 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'];
?>
Я получаю URL-адреса из фрагмента Google (тот, что под заголовком зеленого цвета).Он использовал библиотеку phpQuery, которая автоматизирует процесс.Я ищу все "cites" в Div с id # ires.
Это прекрасно работает, проблема начинается с мобильной версии:
<?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.
Это моя проблема, я не могу получить полный URL, кто-то может мне помочь?
Я оставляю часть исходного кода на странице мобильной версии 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>