- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Все понял, это я туплю, не понял сразу что Вы исходник обновили
Спасибо, а то я запарился уже такой скрипт искать и ручками проверять каждый урл
уже не раз замечаю, что Яндекс отдает через браузер одно количество страниц, а когда парсишь с помощью PHP (даже если ставить паузы в несколько секунд между запросами), то отдает меньшее количество страниц, причем бывает даже так, что вместо 25 страниц может отдавать по 5-6 страниц.
Никто не знает как с этим бороться?
P.S.: В заголовке отправки ставлю, что это Explorer или Opera, а также число q для запроса каждый раз генерю датчиком случайных чисел.
число q для запроса каждый раз генерю датчиком случайных чисел
А это зачем? Не проще ли переходить по ссылке «Следующая»?
уже не раз замечаю, что Яндекс отдает через браузер одно количество страниц, а когда парсишь с помощью PHP (даже если ставить паузы в несколько секунд между запросами), то отдает меньшее количество страниц, причем бывает даже так, что вместо 25 страниц может отдавать по 5-6 страниц.
Никто не знает как с этим бороться?
P.S.: В заголовке отправки ставлю, что это Explorer или Opera, а также число q для запроса каждый раз генерю датчиком случайных чисел.
а нельзя формировать масив запросов и через курл их брать все разом ?
А это зачем? Не проще ли переходить по ссылке «Следующая»?
проще было создать запрос, чем парсить Следующая. За идею спасибо, попробую ☝
а нельзя формировать масив запросов и через курл их брать все разом ?
спасибо, тоже попробую. ☝
Только вопрос остается открытым: описанная проблема -- это защита Яндекса от парсинга?
При каждом новом параметре q он снова генерит вам выдачу. Если вы его берете «от балды», то ничто не мешает вам его вообще не включать в запрос.
То есть так раньше было... сейчас посмотрел повнимательнее:
параметры q вообще пропали из листалки!
Имейте в виду, что есть (1) склейка по сниппетам «на лету» (проявляется в том, что число результатов выдачи уменьшается при ее листании) и (2) ваш браузер и ваш сервер могут попадать на разные фронт-сервера.
При каждом новом параметре q он снова генерит вам выдачу. Если вы его берете «от балды», то ничто не мешает вам его вообще не включать в запрос.
То есть так раньше было... сейчас посмотрел повнимательнее:
параметры q вообще пропали из листалки!
Имейте в виду, что есть (1) склейка по сниппетам «на лету» (проявляется в том, что число результатов выдачи уменьшается при ее листании) и (2) ваш браузер и ваш сервер могут попадать на разные фронт-сервера.
отдаю следующий запрос на яндекс:
$page = "http://www.yandex.ru/yandsearch?&p=".$i."&text=link%3D%22www.cgstudio.ru%2A%22";
$url = "yandex.ru";
$fp = fsockopen($url, "80", $errno, $errstr, 30);
$out = "GET ".$page." HTTP/1.0\r\n";
$out .= "Host: ".$url."\r\n";
$out .= "User-Agent: Opera/7.23 (Windows NT 5.0; U)\r\n";
$out .= "Connection: Close\r\n\r\n";
fputs($fp, $out);
while (!feof($fp))
{
$content_tmp = fgets($fp, 128);
$content .= $content_tmp;
}
fclose($fp);
так вот я получаю от Яндекса следующий ответ:
HTTP/1.1 302 Found
Date: Fri, 03 Aug 2007 10:32:13 GMT
Server: Apache/1.3.29 (Unix) mod_perl/1.29 mod_deflate/1.0.21 rus/PL30.19
Location: http://www.yandex.ru/yandsearch?&p=0&text=link%3D%22www.cgstudio.ru%2A%22
Connection: close
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>302 Found</TITLE>
</HEAD><BODY>
<H1>Found</H1>
The document has moved <A HREF="http://www.yandex.ru/yandsearch?&p=0&text=link%3D%22www.cgstudio.ru%2A%22">here</A>.<P>
</BODY></HTML>
Кто знает как решить проблему?
Проконсультируйтесь со спецом. IMHO, должно помочь следующее:
$url = "yandex.ru";
$fp = fsockopen($url, "80", $errno, $errstr, 30);
$out .= "Host: ".$url."\r\n";
www. в $url допишите.
$page = "http://www.yandex.ru/yandsearch?&p=".$i."&text=link%3D%22www.cgstudio.ru%2A%22";
$out = "GET ".$page." HTTP/1.0\r\n";
И $page должно быть "/yandsearch?&p=".$i."&text=link%3D%22www.cgstudio.ru%2A%22";
Проконсультируйтесь со спецом. IMHO, должно помочь следующее:
www. в $url допишите.
И $page должно быть "/yandsearch?&p=".$i."&text=link%3D%22www.cgstudio.ru%2A%22";
Помогло вместо всей этой штуки с заголовками просто забирать страницу с помощью функции file_get_contents ().
собственно говоря такой скрипт на перле, размещённый в папке c:\crawler откроет файлик sitemap.txt, который содержит на каждой строке по ссылке и разобьёт его на 2 файла sitemap.ind.txt и sitemap.noind.txt - проиндексированные и непроиндексированные странички.
Я Ваш скриптик чуток доделал, чтобы он проверял страницы формата:
www.site.ru/page1/ и www.site.ru/page1.html