【发布时间】:2015-01-03 01:56:20
【问题描述】:
我正在尝试学习如何构建一个从群组获取信息的 facebook 群组爬虫(来自群组的帖子列表,其中包含帖子的作者、帖子 ID、发布日期等信息。
对我来说,重要的是要声明我正处于页面抓取研究的开始阶段!
从这个页面找到了一个很好的教程: http://www.oooff.com/php-scripts/basic-curl-scraping-php/basic-scraping-with-curl.php
运行这段代码时:
<?php
$url = "http://www.oooff.com/";
$ch = curl_init($url); // initialize the CURL library in my PHP script so we can later work on it - inside the handler.
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // curl_setopt() function is used to set options on the $ch handler.// in this case we use the CURLOPT_RETURNTRANSFER option
$curl_scraped_page = curl_exec($ch); // "run all the stuff we've set" - return the data scraped to the variable $curl_scraped_page
curl_close($ch);
echo $curl_scraped_page;
?>
它可以工作,但有时当我运行它时,我会得到一个空白页。
当我在 facebook 上运行它时(或者更具体地在 FB 组上运行,因为这是我需要的),我得到一个空白页。我尝试在 yahoo.com 上运行它,我得到了相同的结果。
- 为什么会这样?
- 获取页面内容的正确方法是什么?
【问题讨论】:
-
页面不再只是 html。他们是javascript。他们是CSS。它们是来自多个不同域/站点的内容。由于您刚刚开始,这里有一个非常重要的提示:在处理外部资源时永远不要假设成功。总是假设失败,检查失败,并将成功视为一个惊喜。在你的情况下
if ($curl_scraped_page === false) { die(curl_error($ch)); } -
如果不是 boolean false,则 curl 成功,但没有返回任何内容。
var_dump($curl_scraped_page)将显示其中的内容。可能是一个空字符串,或者一些不可打印的东西。 -
调试这是个好主意,我之前尝试过使用错误功能,但没有成功。现在它起作用了。我在一个 FB 组上运行了这个脚本并收到了这条消息:“SSL 证书问题:无法获取本地颁发者证书”
标签: php facebook curl web-crawler