私はこのプロジェクトに取り組んでおり、touch.facebook.comから紹介されたiframe内のFacebookの場所を使用して、近くの場所の非常に小さなリストを追加したいと思っています。touch.facebook.com/#/places_friends.phpを簡単に使用できます。しかし、それはヘッダーや他のナビゲーションバーをロードして、メッセージ、イベントなどのバーを表示します。コンテンツが必要なだけです。
touch.facebook.com/#/places_friends.phpソースを見ると、かなり確信しています。ロードする必要があるのはdivの「コンテンツ」だけです。とにかく、私はphpに非常に慣れていないので、自分の考えをかなり確信しています。私がやろうとしているのはウェブスクレイピングと呼ばれています。
スタックオーバーフローについて理解し、認証などについて心配する必要がないようにするために、ログインページを読み込んで、少なくともスクレーパーを機能させることができるかどうかを確認したいと思います。動作するスクレイピングコードができたら、残りを処理できると確信しています。div内のすべてをロードしました。私はこれが以前に行われたのを見たことがあるので、それが可能であることを知っています。そして、touch.facebook.comにログインしようとしたときに表示されるものとまったく同じように見えますが、上部に青いfacebookロゴがなく、それが私がここで達成しようとしていることです。
これがログインページです。実際のログインボタンにログインするためのテキストボックスを含むdivをロードしようとしています。正しく行われていれば、Facebookのヘッダーバーがぼやけていないものが表示されるはずです。
私はもう試した
<?php
$page = file_get_contents('http://touch.facebook.com/login.php');
$doc = new DOMDocument();
$doc->loadHTML($page);
$divs = $doc->getElementsByTagName('div');
foreach($divs as $div) {
if ($div->getAttribute('id') === 'login_form') {
echo $div->nodeValue;
}
}
?>
空白のページをロードするだけです。
http://simplehtmldom.sourceforge.net/も使ってみました
例の基本セレクターを次のように変更しました
<?php
include('../simple_html_dom.php');
$html = file_get_html('http://touch.facebook.com/login.php');
foreach($html->find('div#login_form') as $e)
echo $e->nodeValue;
?>
私も試しました
<?php
$stream = "http://touch.facebook.com/login.php";
$cnt = simplexml_load_file($stream);
$result = $cnt->xpath("/html/body/div[@id=login_form]");
for($i = 0; $i < $i < count($result); $i++){
echo $result[$i];
}
?>
それもうまくいきませんでした