PHP-скрипт для парсинга Яндекс.Каталога

AK
На сайте с 02.11.2006
Offline
33
17750


<?

$cat = 'Business/Corporate_Services/Business_Contacts/';

$url = 'http://pda.yaca.yandex.ru/yca/tungrp/cat/'.$cat;
$np_pat = '/<a target="_self" href="(.*)"><font color="#333333">след.<\/font><\/a>/U';
$yc_pat = '/<li>\n<font><a.*href="(.*)".*>.*<\/li>/isU';

while ($data = file_get_contents($url)) {
$data = iconv('utf-8', 'cp1251', $data);
preg_match_all($yc_pat, $data, $o1, PREG_SET_ORDER);
foreach ($o1 as $o) echo $o[1]."<br />"; flush();
preg_match($np_pat, $data, $o2);
$url = ($o2 ? $o2[1]:FALSE);
}

?>

в продолжение парсинга wordstat - парсер Яндекс.Каталога

выдирает все URL в указанной (задается параметром $cat) категории. для работы необходим iconv (на большинстве хостингов имеется).

благодарности принимаются в виде "спасибо", а также в виде повышения репутации, ну и в денежном эквиваленте:

  • опять же Яндекс.Деньги: 4100140771110
  • R133674219104
  • Z284249398271

p.s. возможна доработка, а также разработка любых аналогичных средств

юни
На сайте с 01.11.2005
Offline
902
#1

Товарищи демоны, черкните тут строчку кода, чтобы 1) к списку сайтов добавлялся порядковый номер, и 2) чтобы сделать задержку запроса к Яндексу, в 2-3 секунды.

Автору - респект. :)

P.S. Желательно отдельной строкой, чтобы её закомментить можно было, при желании.

https://a-parser.com/ - парсер для профессионалов SEO, маркетологов, арбитражников и SaaS, https://searchengines.guru/ru/forum/944108 - прокси-сервис на базе операторов домашнего интернета, сотни тысяч IP-адресов, канал от 20 Мбит
BrokenBrake
На сайте с 03.03.2007
Offline
194
#2

Яндексоиды позорники, до сих пор тэгом font пользуются... 21 век. Россия.

AK
На сайте с 02.11.2006
Offline
33
#3
юни:
Товарищи демоны, черкните тут строчку кода, чтобы 1) к списку сайтов добавлялся порядковый номер, и 2) чтобы сделать задержку запроса к Яндексу, в 2-3 секунды.

Автору - респект. :)

P.S. Желательно отдельной строкой, чтобы её закомментить можно было, при желании.

<? 


$cat = 'Business/Corporate_Services/Business_Contacts/';
$delay = '3';

$url = 'http://pda.yaca.yandex.ru/yca/tungrp/cat/'.$cat;
$np_pat = '/<a target="_self" href="(.*)"><font color="#333333">след.<\/font><\/a>/U';
$yc_pat = '/<li>\n<font><a.*href="(.*)".*>.*<\/li>/isU';

echo "<ol>";

while ($data = file_get_contents($url)) {
$data = iconv('utf-8', 'cp1251', $data);
preg_match_all($yc_pat, $data, $o1, PREG_SET_ORDER);
foreach ($o1 as $o) echo "<li>".$o[1]; flush();
preg_match($np_pat, $data, $o2);
$url = ($o2 ? $o2[1]:FALSE);
sleep($delay);
}

?>
AK
На сайте с 02.11.2006
Offline
33
#4
BrokenBrake:
Яндексоиды позорники, до сих пор тэгом font пользуются... 21 век. Россия.

это еще pda-версия. а на обычной вообще паттерн фиг напишешь - столько косяков =)

BrokenBrake
На сайте с 03.03.2007
Offline
194
#5

Ну обычную парсить в любом случае смысла нет, ни к чему лишний объем.

AK
На сайте с 02.11.2006
Offline
33
#6

подводя итоги: 0р., 0$, 4 "+", 1 "-" с претензией, мол, зачем выкладывать в паблик?

ну хотя бы для того, чтобы на моих сайтах в sape были тематические ссылки.

NL
На сайте с 23.11.2007
Offline
4
#7

А может кому-нибудь нужна вся база ЯКа? В формате MS Access или уже готовый MySQL-дамп для каталога eSyndiCat?

NaturalLinks.ru (http://www.naturallinks.ru)
Pol Fransheski
На сайте с 27.12.2006
Offline
80
#8
Andrey-k:
<? 


$delay = '3';


?>

Прошу прощения

За что отвечает $delay = '3'; ? ( Програмёр я никакой )

И ещё один вопрос

Запустил скрипт Он спарсил 2000 урлов Хотя в разделе 6500.

AK
На сайте с 02.11.2006
Offline
33
#9
Pol Fransheski:
Прошу прощения
За что отвечает $delay = '3'; ? ( Програмёр я никакой )
И ещё один вопрос
Запустил скрипт Он спарсил 2000 урлов Хотя в разделе 6500.

это задержка в секундах в переходе к следующей странице.

возможно яндекс заблокировал ip, попробуйте увеличить $delay.

если не поможет - в самом начале скрипта впишите строку:

set_time_limit(600);
K
На сайте с 06.12.2007
Offline
0
#10

Андрей, подскажите новичку как составляются паттерны (шаблоны) для парсинга. Я изучал ваши паттерны, но в них так и не разобрался. Весь интернет перерыл, но так и не нашёл. Не могли бы Вы скинуть ссылочку или вкратце рассказать о правилах составления паттернов?

$np_pat = '/<a target="_self" href="(.*)"><font color="#333333">след.<\/font><\/a>/U';

$yc_pat = '/<li>\n<font><a.*href="(.*)".*>.*<\/li>/isU';

$pattern = '/<table border="0" width="100%" cellspacing="0" cellpadding="5">(.*?)<\/table>/is';

$pattern2 = '/<tr class="tlist".*?><td><a href=".*?">(.*?)<\/a><\/td>[\n]*<td align=["]*right["]*>([\d]+)<\/td><\/tr>/is';

Объясните на этих примерах суть.

Заранее благодарю

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий