file_get_contents returns html 输入没有任何内容
file_get_contents returns nothing on html input
file_get_contents() returns www.akaar.org but not on www.ptsda.org.
上的正确文件内容
主要区别在于akaar.org is a php project and ptsda.org是html。
基本上我正在 php 中构建网络爬虫。当我成功爬过至少 150 多个站点时,它没有爬过那个特定站点。
是一个 Flash 网站,不能像 HTML 那样容易被抓取
ptsda.org 正在返回此 403(禁止)错误:
failed to open stream: HTTP request failed! HTTP/1.1 403 ModSecurity Action
看起来他们有 Apache ModSecurity 保护来阻止他们的内容以这种方式被抓取。
这里是某些网站不允许抓取的原因。
file_get_contents('http://www.akaar.org/')
您可以从网站获取结果,这意味着托管该网站的服务器未配置文件墙来阻止抓取请求。
file_get_contents('http://www.ptsda.org/')
在这种情况下,您将得到 HTTP request failed! HTTP/1.1 403 ModSecurity
作为输出,这意味着服务器配置了防火墙,您不会收到响应。阅读更多关于 ModSecurity.
这里是解决方法,尝试使用CURL instead of file_get_contents。注意:这是一个解决方法。
<?php
$curl_handle=curl_init();
curl_setopt($curl_handle, CURLOPT_URL,'http://www.ptsda.org/');
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_USERAGENT, 'ptsda');
$query = curl_exec($curl_handle);
curl_close($curl_handle);
//print_r($query);
?>
您的问题是 ptsda.org 的主机返回此 403(禁止)错误:
file_get_contents("http://www.ptsda.org"): failed to open stream: HTTP request failed! HTTP/1.1 403 ModSecurity
这表明他们有适当的保护措施来阻止他们的内容被机器人抓取。您 可能 能够通过在 PHP (See this question).
中设置用户代理字符串来绕过此问题
终于找到解决办法了。
我将页面另存为 HTML 并为我的 php 抓取工具提供了输入。
<?php
$contents = file_get_contents("The downloaded HTML file");
print_r($contents);
?>
成功:)
感谢大家的回复。
file_get_contents() returns www.akaar.org but not on www.ptsda.org.
上的正确文件内容主要区别在于akaar.org is a php project and ptsda.org是html。
基本上我正在 php 中构建网络爬虫。当我成功爬过至少 150 多个站点时,它没有爬过那个特定站点。
是一个 Flash 网站,不能像 HTML 那样容易被抓取
ptsda.org 正在返回此 403(禁止)错误:
failed to open stream: HTTP request failed! HTTP/1.1 403 ModSecurity Action
看起来他们有 Apache ModSecurity 保护来阻止他们的内容以这种方式被抓取。
这里是某些网站不允许抓取的原因。
file_get_contents('http://www.akaar.org/')
您可以从网站获取结果,这意味着托管该网站的服务器未配置文件墙来阻止抓取请求。file_get_contents('http://www.ptsda.org/')
在这种情况下,您将得到HTTP request failed! HTTP/1.1 403 ModSecurity
作为输出,这意味着服务器配置了防火墙,您不会收到响应。阅读更多关于 ModSecurity.
这里是解决方法,尝试使用CURL instead of file_get_contents。注意:这是一个解决方法。
<?php
$curl_handle=curl_init();
curl_setopt($curl_handle, CURLOPT_URL,'http://www.ptsda.org/');
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_USERAGENT, 'ptsda');
$query = curl_exec($curl_handle);
curl_close($curl_handle);
//print_r($query);
?>
您的问题是 ptsda.org 的主机返回此 403(禁止)错误:
file_get_contents("http://www.ptsda.org"): failed to open stream: HTTP request failed! HTTP/1.1 403 ModSecurity
这表明他们有适当的保护措施来阻止他们的内容被机器人抓取。您 可能 能够通过在 PHP (See this question).
中设置用户代理字符串来绕过此问题终于找到解决办法了。
我将页面另存为 HTML 并为我的 php 抓取工具提供了输入。
<?php
$contents = file_get_contents("The downloaded HTML file");
print_r($contents);
?>
成功:)
感谢大家的回复。