@fr1zzer

Как добавить страницы к парсингу?

Есть код:
<html>
<head></head>
<body>
<?php
function browser($url) {
$url="https://site.com/page?p=1";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
$html = curl_exec($ch);
curl_close($ch);
return $html;
}
preg_match_all('~<a class="qa_title_link" href="(.*?)">~is', browser($url), $text);
print implode('<br />', array_slice($text[1], 0, 20)); 
?>
</body></html>


Как сделать что бы в
$url="https://site.com/page?p=1";
?p=1 становилось ?p=2 и так далее и парсило со всех страниц и вывело общий print всех страниц.
  • Вопрос задан
  • 224 просмотра
Пригласить эксперта
Ответы на вопрос 2
@4iloveg
Full-Stack HTML Developer
Убери $url="https://site.com/page?p=1"; из функции
а потом
for($i = 1;$i<=10;$i++){
$results[] = browser("https://site.com/page?p=$i");
}
// далее пройди по элементам массива через foreach() и достань ссылки

но лучше посмотри как использовать мультикурл
Ответ написан
@PavelFokeev
pavl1k.ru
<html>
<head></head>
<body>
<?php
function browser($url) {
// $url="https://site.com/page?p=1";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
$html = curl_exec($ch);
curl_close($ch);
return $html;
}
$all_pages = array();
for($i = 1;$i<=10;$i++){
	preg_match_all('~<a class="qa_title_link" href="(.*?)">~is', browser("https://site.com/page?p=$i"), $text);
	$all_pages = array_merge($all_pages, $text[1]);
	print implode('<br />', array_slice($text[1], 0, 20)); 
}
print implode("<br />", $all_pages);
?>
</body></html>


print implode('<br />', array_slice($text[1], 0, 20));
будет выводить результат парсинга одной страницы в каждой итерации цикла

print implode("<br />", $all_pages); выведет объединённый массив, после парсинга всех страниц
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы