私が取り組んでいるこのプロジェクトがあり、touch.facebook.comのiframe
機能でFacebookの場所を使用して、近くの場所の本当に小さなリストを追加したいと思います。 touch.facebook.com/#places.php
を簡単に使用できますが、その場合はトップバーが読み込まれます。
とにかく、URLを操作して、上部と下部のメニューバーを表示するのではなく、場所のコンテンツのみをロードする方法があります。コードを見ると、div id="content"
があるように見えます。 URLを作成して、そのdivのみをロードする方法があるのではないかと考えていましたか?また、touch.facebook.com/#places.php#content
を使用してコンテンツにジャンプするURLを作成しようとしましたが、明らかにその方法でtouch.facebook.comがビルドされ、機能しません。
コンテンツのセクションのみをロードする方法を実際に考えたいと思います。
先に進み、PHPでこのアプローチを試しました。 file_get_contents
の例を読んで、例1に従って、ここにあるものが正しいように見えます。
<?php
$page = file_get_contents('http://touch.facebook.com');
$doc = new DOMDocument();
$doc->loadHTML($page);
$divs = $doc->getElementsByTagName('div');
foreach($divs as $div) {
if ($div->getAttribute('id') === 'content') {
echo $div->nodeValue;
}
}
?>
しかし、完全に空白のページが表示されます。
URLを操作してページの一部のみを取得することはできません。したがって、あなたがしたいのは、選択したサーバー側言語を介してページのコンテンツを取得し、HTMLを解析することです。そこから、探している特定のDIVを取得して、画面に出力できます。不要なコンテンツを削除するためにも使用できます。
PHPを使用すると、 file_get_contents()
を使用して解析するファイルを読み取り、 DOMDocument を使用して解析し、必要なDIVを取得できます。
これが基本的な考え方です。これはテストされていませんが、正しい方向を示すはずです。
$page = file_get_contents('http://touch.facebook.com');
$doc = new DOMDocument();
$doc->loadHTML($page);
$divs = $doc->getElementsByTagName('div');
foreach($divs as $div) {
// Loop through the DIVs looking for one withan id of "content"
// Then echo out its contents (pardon the pun)
if ($div->getAttribute('id') === 'content') {
echo $div->nodeValue;
}
}
他の返信ごとに、認証ページを超えて取得したいことを理解しています。
まず、ログインしてから必要なページにアクセスし、最後にDOM反復を処理する必要があります。
リクエストを処理するオプションとしてcurlがあり、ログインします。また、curlを使用してページコンテンツを取得することもできます。
アクセスしようとしているページには認証が必要です。おそらくサインイン後に必要なデータを見ていました。そのため、プログラムでページをスクレイプしようとすると、ログインページのコンテンツが表示されます。
このスクレイピングアプローチを使用する代わりに、 FacebookのAPI を使用して、必要な情報をプログラムで抽出できるかどうかを確認できます。
関連する注意事項として、 YQL を使用して、公開サイト上のWebページの一部を取得できます。ただし、アクセスしようとしているページには認証が必要なため、場合によっては機能しない可能性があります。