2

特定のFacebookファンページのユーザーのリストを抽出するには、以下のコードを使用しています

$text = file_get_contents('rawnike.php');
 //  $text = file_get_contents('http://www.facebook.com/plugins/fan.php?connections=10000&id=15087023444');

   $text = preg_replace("/<script[^>]+\>/i", "", $text);
   $text = preg_replace("/<img[^>]+\>/i", "", $text);


$pattern = '!(https?://[^\s]+)!'; // refine this for better/more specific results

if (preg_match_all($pattern, $text, $matches)) {
    list(, $links) = ($matches);
    //print_r($links); 
    //var_dump($links);
}

unset($links[0]);unset($links[1]);unset($links[2]);unset($links[3]);unset($links[4]);unset($links[5]);unset($links[6]);unset($links[7]);
 //var_dump($links);
 $links=str_replace('https','http',$links); $links=str_replace('\"','',$links);
foreach ($links as $value) {
    echo "fb user ID: $value<br />\n";
}

そしてこれにより、file_get_contents('rawnike.php')(ローカルに保存されたrawnike.php)を使用してユーザーのプロファイルリンクを正常に取得しています

しかし、URLから同じものをプルしようとすると、file_get_contents("http://www.facebook.com/plugins/fan.php?connections=10000&id=15087023444")
取得できません。つまり、Facebookページのソースを直接抽出できません。ページのソースを手動で保存する必要があります。

ページのソースコードを手動でローカルに保存して解析した場合にユーザーのページを解析するときに観察したのと同じことで、ユーザーの興味を引き出すことができます。一方、URLを使用してソースコードを直接抽出しようとすると、同じソースが取得されません。

つまり$source=file_get_contents($url); $source="content which displays ur browser doesnt supported or some crap"$source=file_get_contents($string_to_extract_content_of_local_saved_sourceFile); $source="content which i excatly needed to parse"

少し研究をすることで、私はそれFQLがこのようなことをするための正しいアプローチであることを理解しました。しかし、plsは、抽出されたソースコードに違いがある理由を理解するのに役立ち、それがFQL唯一の方法または他の方法で先に進むことができます。

4

3 に答える 3

1

しかし、plsは、抽出されたソースコードに違いがある理由を理解するのに役立ちます

Facebookは、HTTPリクエストの詳細、User Agentヘッダーなどを確認することで、リクエストを行う実際の人が使用する実際のブラウザではないことを認識しているため、データへのアクセスをブロックしようとします。

「実際の」ブラウザのように見えるリクエストの詳細を提供することで、これを回避することが できますが、HTMLページをスクレイピングして目的の情報を取得することは、一般的には方法ではありません。なぜなら– </ p>

そして、FQLは、私が先に進むことができる唯一の方法または他の方法です。

–それがAPIの目的です。FQL / Graph APIは、Facebookがデータにアクセスするために提供する手段です。

興味のあるデータがあり、それがそれらによって提供されていない場合、Facebookは実際にはそのデータを提供することを望んでいません。ページが好きな人のデータはそんなデータです。

于 2012-09-04T08:42:58.723 に答える
1
<?php
    $curl = curl_init("https://www.facebook.com/plugins/fan.php?connections=10000&id=15087023444");
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20100101 Firefox/15.0.1");
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
    $data = curl_exec($curl);
    curl_close($curl);

    $data = preg_replace("%(.*?)(<div id.*?>)%is","",$data); //to strip <scripts>,<links>,<meta>,etc tags.

ただし、最大接続数は100です。:S

于 2012-09-09T02:04:52.793 に答える
0

接続パラメータの数は100を超えることはできません。1000で試行しています。

于 2013-04-26T10:57:29.027 に答える