Парсинг выдачи Яндекса и Yahoo.

12
NikolaZ
На сайте с 17.12.2007
Offline
100
1466

Открытие странички с поисковым запросом делаю так:

$handle = fopen($url, "rb");

Раньше работало. Теперь в Яндексе вместо России, выдается выдача Украины(Харьков).

Для Yahoo выдается 999 ошибка.

Остальные поисковики и другие сайты через fopen открываются.

FeoOne
На сайте с 27.12.2008
Offline
32
#1

$content = file_get_contents('http://yandex.ru/');

NikolaZ
На сайте с 17.12.2007
Offline
100
#2

С Яндекс вроде разобрался. Хостер перенес сервер.

Попробовал на другом хостинге, там выдача США.

NikolaZ добавил 21.01.2009 в 23:06

FeoOne:
$content = file_get_contents('http://yandex.ru/');

Спасибо.

Буду иметь ввиду и эту функцию.

file_get_contents работает так же как и fopen.

Но страница

http://siteexplorer.search.yahoo.com/uk/search?p=http%3A%2F%2Fyandex.ru&bwm=i&bwmf=u&bwms=p&fr=siteexplorer&fr2=seo-rd-se

не открывается.

karukite
На сайте с 07.12.2008
Offline
8
#3

Воспользуйте библиотекой CURL в php.

Сыылка на доку на php.net

Between two evils always pick the one never tried before...
NikolaZ
На сайте с 17.12.2007
Offline
100
#4
karukite:
Воспользуйте библиотекой CURL в php.
Сыылка на доку на php.net

А в чем смысл использования CURL?

Посмотрел, в CURL так же используется fopen. Не понятно, что это может поменять, если fopen не работает с Yahoo. Готовый кусок кода для Yahoo есть ?

karukite
На сайте с 07.12.2008
Offline
8
#5
NikolaZ:
А в чем смысл использования CURL?
Посмотрел, в CURL так же используется fopen. Не понятно, что это может поменять, если fopen не работает с Yahoo. Готовый кусок кода для Yahoo есть ?

Смысл использования CURL: удобнее, можно легко передать хедеры, поддержка gzip и deflate и многое другое.

К примеру у меня и Яндекс и Яху парсятся отлично из любой страны. Почитатйте мануалы по CURLу и в частности по заголовка HTTP запросов (по-моему в них кроется истина).

P.S. А где вы прочитали, что CURL использует fopen?

P.P.S. Пример запроса через CURL отправляю в личку

karukite добавил 22.01.2009 в 09:51

Кстати, если совсем беда будет, попробуйте через сокет открывать соединение, эмулировать браузер и отправлять запросы. Может получиться.

Ufaweb
На сайте с 03.03.2008
Offline
182
#6
NikolaZ:
Посмотрел, в CURL так же используется fopen

fopen() работает через сокет, а curl - самостоятельная библиотека, намного мощнее и более гибкая. Скажем, реферер при парсинге выдачи передавать нужно, а кроме как курл (или сокеты, но это не так удобно) этого не сделать.

J
На сайте с 03.07.2006
Offline
122
#7

Да и вобще это глупо такими функциями пользоваться для получения выдачи...

темболее яндекса и яху...

Curl однозначно, как уже было выше сказано.

Тимонин Александр, Тольятти. Вконтакте https://vk.com/my.face (https://vk.com/my.face) Управление ссылками на своих сайтах + Контекстные ссылки (/ru/forum/489616) Скрипты, недорого отзывы от форумчан (/ru/forum/268922)
NikolaZ
На сайте с 17.12.2007
Offline
100
#8

С Яндексом проблем почти нет, после того, как стал запускать скрипт на другом хостинге.

Проблема была в том, что хостер перенес сервер на Украину и стала выдаваться выдача для Украины.

Работают и fopen, и file_get_contents и CURL одинаково.

Так же почти одинаково они работают с Yahoo.

Открывал эту ссылку: http://siteexplorer.search.yahoo.com/uk/search?p=http%3A%2F%2Fyandex.ru&bwm=i&bwmf=u&bwms=p&fr=siteexplorer&fr2=seo-rd-se

Везде выдаётся 999 ошибка.

The document has moved here.

Вполне возможно, что в Yahoo стоит защита от парсинга.

Попробовал в Делфи -> Вэббраузер, там эта ссылка Yahoo открывается.

J
На сайте с 03.07.2006
Offline
122
#9

на счет "The document has moved here." решал подобную проблему(кстати с помощью курла), но с гуглом.

поищи на phpclub ответ либо погугли.

FeoOne
На сайте с 27.12.2008
Offline
32
#10
Ufaweb:
fopen() работает через сокет, а curl - самостоятельная библиотека, намного мощнее и более гибкая. Скажем, реферер при парсинге выдачи передавать нужно, а кроме как курл (или сокеты, но это не так удобно) этого не сделать.

Curl эта та же самая надстройка над сокетами, что и fopen, только навороченная. А зачем человеку рефереры и куки для того что бы побыстрому спарсить ПС и найти там свой сайт? То что курл сделает в 5 строчек, file_get_contents сделает в одну.

ТС, у меня код

$f = file_get_contents('http://siteexplorer.search.yahoo.com/uk/search?p=http%3A%2F%2Fyandex.ru&bwm=i&bwmf=u&bwms=p&fr=siteexplorer&fr2=seo-rd-se');

echo($f);

открыл яху с адресом яндекса в поисковой строке без ошибок. Покажите свой код.

12

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