2013-10-08 2 views
2

Я делаю веб-соскабливание с завитком для страницы профиля linkedin. Если мы попытаемся извлечь данные из этого (http://in.linkedin.com/in/ratneshdwivedi) URL, который является общедоступным, он работает. Когда я вошел в систему linkedin и пытаюсь собрать данные с этого URL-адреса (http://www.linkedin.com/profile/view?id=77597832&locale=en_US&trk=tyah2&trkInfo=tas%3Aravi%20kant%20mishra%2Cidx%3A1-1-1), он не работает и вместо этого возвращает пустые данные.Веб-соскабливание в PHP - работа с некоторыми URL-адресами, но не с другими

Ниже мой исходный код:

$html= $this->_getScrapingData ('http://in.linkedin.com/in/ratneshdwivedi',10); 
preg_match("/<span class=\"full-name\">(.*)<\/span>/i", $html, $match); 

private function _getScrapingData($url,$timeout) { 
     $ch = curl_init($url); // initialize curl with given url 
     curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]); // set useragent 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // write the response to a variable 
     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // follow redirects if any 
     curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); // max. seconds to execute 
     curl_setopt($ch, CURLOPT_FAILONERROR, 1); // stop when it encounters an error 
     return @curl_exec($ch); 

    } 

Заранее спасибо

ответ

1

Ваш сценарий аутентификации?

Связанная страница может быть просмотрена только после входа в систему, это объясняет, почему ваш скрипт возвращает пустые данные, поскольку полноразмерный класс span не существует на перенаправленной странице входа.

Возможно, вы также захотите проверить http://developer.linkedin.com/documents/profile-api, поскольку есть намного более приятные способы достижения этого, чем очистка страниц.

1

Я думаю, что проблема заключается в том, что вы зарегистрированы в своем браузере (я думаю, ваш браузер имеет cookie с некоторым идентификатором сеанса), но когда вы звоните curl, он ничего не знает о ваших файлах cookie.

Решение состоит в том, чтобы сначала вызвать запрос на вход с вашими учетными данными и сохранить полученные файлы cookie из linkedin. Затем вызовите все запросы, которые вы хотите, с помощью соответствующих файлов cookie. Просто Google, как отправлять файлы cookie через PHP curl, я уверен, что кто-то спросил об этом раньше.

Btw., Я думаю, что linkedin имеет API, который вы можете использовать вместо этого.

2

Ваш скрипт не использует те же куки-файлы, что и ваш браузер. Сначала вам нужно пройти через форму входа в систему.

Использование

CURLOPT_COOKIEJAR 
CURLOPT_COOKIEFILE 

держать печенье через ваши запросы.

Смежные вопросы