当尝试使用简单的html解析器解析html时,我得不到任何回复。这是代码:
$html = new simple_html_dom();
$html->file_get_html('http://thepiratebay.se/search/1080p/0/7/207');
$html
什么都不返回。但是,当我使用此网址http://thepiratebay.se/browse/207/0/7
执行相同的操作时,我得到了正常的响应。
我真的不明白为什么因为网址完美无缺。
var_dump
上的$html
会返回bool (false)
。
我有php 5.3.1并且 php.ini中有allow_url_fopen
答案 0 :(得分:4)
使用cURL
并设置用户代理。显然,thepriatebay.se不响应没有用户代理的请求。
这会抓取浏览器的用户代理并将其发送到目标。
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
要通过cURL请求网页,请使用以下命令:
// Start a cURL resource
$ch = curl_init();
// Set options for the cURL
curl_setopt($ch, CURLOPT_URL, 'http://thepiratebay.se/search/1080p/0/7/207'); // target
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // provide a user-agent
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // follow any redirects
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // return the result
// Execute the cURL fetch
$result = curl_exec($ch);
// Close the resource
curl_close($ch);
// Output the results
echo $result;