В поисках какой-то помощи я использую curl для извлечения данных с указанного веб-сайта, на сайте у них есть 10 результатов на первой странице, а затем следующий набор из 10 результатов находится на следующей с добавлением? Page = 2 и т. Д.на.
Я пробовал цикл, но он, похоже, не работал, любое предложение, с которым я мог бы поработать, желательно прокрутку, чтобы загрузить больше, но сначала нужно, чтобы он правильно свернул деталь.
Нижеэто тестовый код, который я использую в качестве примера, полная версия включает в себя параметр post, добавленный к URL, но просто нужны следующие результаты
<?php
// Main url but the next result will be on https://example.org/data/?page=2
$url = "https://example.org/data";
$result = get($url) ;
function get ($url) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.85 Safari/537.36');
$result = curl_exec($curl);
curl_close($curl);
return $result;
}
preg_match_all('!<h1>(.*?)<\/h1>!',$result,$title);
for ($i = 0; $i < count($result[1]); $i++) {
echo '<h1>' . $title[1][$i] . '"</h1>';
}
Всем, кто читает это для изучения, как я, код вышеработает также для базового извлечения заголовка H1 для любого заданного URL, когда значения совпадают, если я могу помочь с любыми основными вопросами для новых кодеров, я сделаю это.
Модифицированный пример, показывающий пример страницы 1,2 в URL.
<?php
for ($i = 1; $i <= 2; $i++) {
$url = "https://www.gamespot.com/search/?q=gta&page=". $i;
echo $url . "<br>";
}
$result = get($url) ;
function get ($url) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.85 Safari/537.36');
$result = curl_exec($curl);
curl_close($curl);
return $result;
}
preg_match_all('!<h4 class="media-title" style="margin:0;padding-bottom:4px;">
<span style="font-weight:bold;"><a href=".*?">(.*?)<\/a><\/span>
<\/h4>!',$result,$title);
for ($i = 0; $i < count($title[1]); $i++) {
echo '<p>' . $title[1][$i] . '</p>';
}