Php 试图删除div的全部内容

Php 试图删除div的全部内容,php,html,web-scraping,scrape,Php,Html,Web Scraping,Scrape,我有一个我正在做的项目,我想在touch.facebook.com的iframe中添加一个使用facebooks places的附近地点的小列表,我可以很容易地使用touch.facebook.com/#/places_friends.php,但是这样会加载类似消息的标题和其他导航栏,我只想要内容 通过查看touch.facebook.com/#/places_friends.php源代码,我非常确定,我需要加载的只是div“content”,无论如何,我对php非常陌生,我非常确定我想尝试的是

我有一个我正在做的项目,我想在touch.facebook.com的iframe中添加一个使用facebooks places的附近地点的小列表,我可以很容易地使用touch.facebook.com/#/places_friends.php,但是这样会加载类似消息的标题和其他导航栏,我只想要内容

通过查看touch.facebook.com/#/places_friends.php源代码,我非常确定,我需要加载的只是div“content”,无论如何,我对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;
    }
}
?>

所做的只是加载一个空白页

我也试过使用

我将示例基本选择器修改为

<?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];
}
?>
xpath(“/html/body/div[@id=login\u form]”);
对于($i=0;$i<$i

这也不起作用

在其他地方捕获数据时,刮取并不总是最好的方法。我建议使用Facebook的API来检索您需要的值抓取将在Facebook决定更改其标记时中断


我假设你不能使用facebook API,如果可以的话,我强烈建议你使用它,因为这样你就可以从整个交易中解脱出来

对于scrape文本,最好的技术是使用xpath,如果touch.facebook.com返回的html是xhtml过渡版,那么您应该使用xpath,示例如下所示:

$stream = "http://touch.facebook.com";
$cnt = simplexml_load_file($stream);

$result = $nct->xpath("/html/body/div[@id=content]");

for ($i = 0; $i < $i < count($result); $i++){
    echo $result[$i];
}
$stream=”http://touch.facebook.com";
$cnt=simplexml\u加载文件($stream);
$result=$nct->xpath(“/html/body/div[@id=content]”);
对于($i=0;$i<$i
您需要了解比较运算符

==
用于严格比较,您应该使用
=

if ($div->getAttribute('id') == 'login_form')
{

}
$stream=”http://touch.facebook.com";
$cnt=simplexml\u加载文件($stream);
$result=$nct->xpath(“/html/body/div[@id=content]”);
对于($i=0;$i

这行中有一个语法错误,我现在删除了它,只需复制并粘贴并运行此代码

我可以想象这些数据在FB的Graph API上以JSON格式提供,这将节省您的时间。你看过API文档了吗?我想过了,但我真的下定决心要搞清楚这个想法。我以前看过,我真的很喜欢这个结果。你说的很有道理。我更改了一些打字错误和空格,但我得到了这个错误解析错误:语法错误,意外'
$stream = "http://touch.facebook.com";
$cnt = simplexml_load_file($stream);

$result = $nct->xpath("/html/body/div[@id=content]");

for ($i = 0; $i < count($result); $i++){
    echo $result[$i];
}