@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); выведет объединённый массив, после парсинга всех страниц
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
28 апр. 2024, в 00:54
10000 руб./за проект
28 апр. 2024, в 00:53
70000 руб./за проект
27 апр. 2024, в 21:24
150000 руб./за проект