我正在尝试获取有关该页面的信息,因为我想按喜欢订购我网站的帖子。我决定通过抓取页面来实现它,并将每个post id的内容存储在db中,然后我可以使用db命令。 (我可以每小时运行一次“刮刀”或类似的东西来更新结果)
我正在做以下事情:
$url = "http://www.mydomain.com";
$html = file_get_contents($url);
$dom= new domDocument;
$dom->loadHTML($html);
我收到以下错误:
Notice: DOMDocument::loadHTML() [domdocument.loadhtml]: Namespace prefix fb is not defined in Entity, line: 36 in C:\xampp\htdocs\page.php on line 13
Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: Tag fb:like invalid in Entity, line: 36 in C:\xampp\htdocs\page.php on line 13
不知怎的,喜欢没有出现?如果我做这样的事情:
$url = "http://www.mydomain.com";
$html = file_get_contents($url);
echo $html;
preg_match_all(
'/<div id="LikePluginPagelet".*?>.*?<\/div>/s',
$html,
$posts,
PREG_SET_ORDER
);
print_r($posts)
第一个'echo'实际上显示整个页面,但print_r只显示Array ( )
是否有可能通过php抓取某些东西?以下是一个示例页面:http://developers.facebook.com/docs/reference/plugins/like/
你可以看到喜欢的地方和喜欢的数量,div有id'LingPluginPagelet',但PHP没有获得它里面的东西。
更新
你可以通过抓取页面制作能够从这里获得500K数量喜欢的代码吗? http://developers.facebook.com/docs/reference/plugins/like/或包含许多喜欢的任何其他页面,如果我能得到它,我也可以在我的代码中使用它。
谢谢!
答案 0 :(得分:1)
您在使用file_get_contents获取的html副本中找不到这些元素(如框),因为这些元素是使用javascript创建的。因此,您需要页面的最终DOM才能以这种方式获取计数。使用PHP,遗憾的是不可能。
但是,您可以做的是收集所有相关网址并针对Facebook API运行它们 - 即使不需要任何访问令牌等,您也可以非常轻松地获取相关内容。 请求如下所示:
https://graph.facebook.com/?ids=<URL>
答案 1 :(得分:0)
我认为你应该看看the Simple HTML DOM parser