我看到很多问题与我的问题相匹配。但他们都没有提供任何可行的解决方案。因此,我不需要制作复杂的功能,而是需要简单的解决方案。请不要 curl 。我已经使用这段代码完成了很多工作。
我正在做一个抓取项目,需要从 ebay 加载产品修订的内容。
我正在使用 PHP 函数
file_get_contents();
这是我遇到麻烦的 URL。
https://cgi.ebay.com/ws/eBayISAPI.dll?ViewItemRevisionDetails&item=272908801183
这个 file_get_contents();在不同的 URL 上工作得很好,但不知道为什么不在这个上。
这是我正在使用的代码。
<?php
$html = file_get_contents('https://cgi.ebay.com/ws/eBayISAPI.dll?ViewItemRevisionDetails&item=272908801183');
echo $html;
?>
但是我收到这个错误..
Warning: file_get_contents(https://cgi.ebay.com/ws/eBayISAPI.dll?ViewItemRevisionDetails&&item=272908801183): failed to open stream: HTTP request failed! HTTP/1.1 500 Internal Server Error in /Users/samz/Documents/projects/scraping/test.php on line 3
最佳答案
file_get_contents (阅读蓝色矩形上的提示)可以通过 php.ini 在服务器端轻松阻止避免使用它。当您想从其他站点获取数据时,请改用 curl。 http://php.net/manual/en/book.curl.php ,有很多选项可以与 curl 一起使用,通过稍微玩一下以下代码可以使用您的 url。
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch,CURLOPT_URL,"https://cgi.ebay.com/ws/eBayISAPI.dll?ViewItemRevisionDetails&item=272908801183");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.A.B.C Safari/525.13");
$data = curl_exec($ch);
curl_close($ch);
通过回显 $data 变量,您可以看到整个页面。
echo $data;
您可以尝试使用 php DOM Methods 解析页面中的数据并将它们转换为您想要的数据类型(对象类、数组等)。
关于php - file_get_contents 无法打开流 : HTTP request failed! HTTP/1.1 500 Internal > Server Error in,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47295100/