我正在尝试获取网站的源代码,以便可以解析出足球器材,我的代码是:
<?php
$url = "https://www.bbc.co.uk/sport/football/scores-fixtures/2019-03-06";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0.2) Gecko/20100101 Firefox/6.0.2',
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language: en-gb,en;q=0.5',
'Accept-Encoding: gzip, deflate',
'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7',
'Proxy-Connection: Close',
'Cookie: PREF=ID=2bb051bfbf00e95b:U=c0bb6046a0ce0334:',
'Cache-Control: max-age=0',
'Connection: Close'
));
$output = curl_exec($ch);
curl_close($ch);
echo substr($output, 0, 12);
?>
显示的子字符串的输出是:
���
我需要标准文本的输出,是压缩后的内容还是什么?
请问该如何解决?
谢谢。
答案 0 :(得分:2)
我需要标准文本的输出,是压缩后的内容还是什么?
是的,完全是:它是gzip压缩的。您的选项是
a)使用例如gzdecode
b)告诉服务器您不希望使用gzip编码的响应;最简单的方法是让curl为您处理:
'Accept-Encoding: gzip, deflate',
curl_setopt($ch, CURLOPT_ENCODING, 'identity');
之前curl_exec()