2

リンクされたプロフィールページのcurlを使用してWebスクレイピングを行っています。公開されているこの ( http://in.linkedin.com/in/ratneshdwivedi ) URL からデータを抽出しようとすると、うまくいきます。リンクインにログインして、この URL ( http://www.linkedin.com/profile/view?id=77597832&locale=en_US&trk=tyah2&trkInfo=tas%3Aravi%20kant%20mishra%2Cidx%3A1- ) からデータを収集しようとすると、 1-1 ) 機能せず、代わりに空のデータを返します。

以下は私のソースコードです:

$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);

    }   

前もって感謝します

4

3 に答える 3

2

スクリプトは、ブラウザと同じ Cookie を使用していません。最初にスクリプトを使用してログイン フォームを通過する必要があります。

使用する

CURLOPT_COOKIEJAR
CURLOPT_COOKIEFILE

リクエストを通じてCookieを保持します。

于 2013-10-08T12:30:46.613 に答える
1

問題は、ブラウザにログインしていることだと思います(ブラウザにはセッションIDを持つCookieがあると思います)が、呼び出したときにcurlCookieについて何も知りません。

解決策は、最初に資格情報を使用してログイン要求を呼び出し、リンクインから受信した Cookie を保存することです。次に、適切な Cookie を使用して、必要なすべてのリクエストを呼び出します。PHP経由curlでCookieを送信する方法をググるだけで、誰かが以前にこれを尋ねたと確信しています。

ちなみに、linkedin には代わりに使用できる API がいくつかあると思います。

于 2013-10-08T12:02:00.073 に答える
1

スクリプトは認証されていますか?

リンクしたページは、ログイン後にのみ表示できます。これは、リダイレクトされたログイン ページにフルネーム スパン クラスが存在しないため、スクリプトが空のデータを返す理由を説明しています。

ページをスクレイピングするよりもはるかに優れた方法があるため、 http://developer.linkedin.com/documents/profile-apiも確認してください。

于 2013-10-08T12:01:01.707 に答える