繁体   English   中英

在PHP上使用CURL解析任何网页

[英]Parsing any webpage using CURL on PHP

是否可以编写一个PHP函数以与浏览器相同的方式返回任何可能链接的HTML字符串? 链接示例:“ http://google.com ”,“”,“ mywebsite.com”,“ somesite.com/.page/nn/?s=b#85452”、“lichess.org”

我试过的

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSLVERSION, 3);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 20);
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
$data = curl_exec($curl);
if(curl_errno($curl)){
    echo 'Curl error: ' . curl_error($curl);
}
echo $data;
curl_close($curl);

可悲的是,对于某些链接,由于SSL或其他任何原因,此代码返回空白页,但对于某些链接,它可以工作。

还是CURL可以替代吗? 我只是不明白为什么php不能开箱即用地检索任何html。

如果您正在运行旧版本的PHP,则SSL站点上的CURL可能会失败。 确保您的操作系统和PHP版本是最新的。

您也可以选择使用与URL一起使用的file_get_contents() ,并且如果您只想发出简单的GET请求,通常这是一个更简单的选择。

$html = file_get_contents('https://www.google.com/');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM