使用简单的html Dom抓取网站时的隐秘结果

时间:2012-08-22 20:18:49

标签: php simple-html-dom web-crawler

我当前正在尝试使用简单的html dom从politifact收集一些数据,但很多时候我有奇怪的错误而不是预期的html。 目标不是暴力破坏网站,而是每天请求一次或两次并缓存结果。 这里得到的大部分回报都是:

‹������í]{wÛ6²ÿ»=g¿ªn#»1EËJœÄ–µ×vœ&ÙÄñÚn²{r{|(  ’S$ÇeuÛï~3न‡c'ÛísNÄ`f0˜Úß=}sxþ¯“#1ŠÆŽ8ùùàÕ‹CQ3Ló]ëÐ4Ÿž?ÿ|~þú•h66Åy`¹¡Ùžk9¦yt\µQù;¦9™L“...

这是超级简单的代码:

$html = file_get_html('http://www.politifact.com/personalities/barack-obama');
print_r($html->plaintext);

你有什么想法吗? 网站上有哪些保护/重定向?

非常感谢!

1 个答案:

答案 0 :(得分:1)

您收到了预期的页面,但是采用的是gzip格式。看起来服务器不介意请求中是否包含accept-encoding标头,而不是发送默认的纯文本响应,无论如何都会发送一个gzip压缩数据。

我不认为simple-html-dom可以解压缩数据,但您可以将cURL用于此目的:

$ch = curl_init('http://www.politifact.com/personalities/barack-obama/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_ENCODING, 'gzip');

$data = curl_exec($ch);

$html = str_get_html($data);