我有一个我正在处理的项目,我想在 touch.facebook.com 的 iframe 中使用 facebooks 地点添加一个非常小的附近地点列表,我可以轻松地使用 touch.facebook.com/#/places_friends.php但随后会加载标题和其他导航栏,例如消息、事件等栏,我只想要内容。
通过查看 touch.facebook.com/#/places_friends.php 源,我很确定,我需要加载的只是 div“内容”无论如何,我对 php 非常陌生,我很确定我的想法正在尝试做的就是所谓的网页抓取。
为了在stackoverflow上弄清楚事情并且不需要担心身份验证或任何事情,我想加载登录页面,看看我是否至少可以让刮板工作。一旦我有一个有效的抓取代码,我很确定我可以处理剩下的。它已经加载了 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];
}
?>
那也不起作用