心血来潮仿个站,发现file_get_contents函数抓取不了数据,求助……
代码如下,两种方法,都抓取不了这个网站的页面源代码,其它网站都可以,这个网站这么邪门,求助哈。<?php
function file_get_content($url) {
if (function_exists('file_get_contents')) {
$file_contents = @file_get_contents($url);
}
if ($file_contents == '') {
$ch = curl_init();
$timeout = 30;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
}
return $file_contents;
}
echo file_get_content("https://twblg.dict.edu.tw/holodict_new/default.jsp");
?> 本帖最后由 猫喝的果粒橙 于 2022-8-13 20:39 编辑
外网的缘故?可是浏览器访问是正常的。 @戴维的个人博客:不是这个原因,因为其它https的网站是可以抓取的,而且加上这两句,目标网站还是无法获取源代码呀。 Curl error: Unknown SSL protocol error in connection to twblg.dict.edu.tw:443
好像是服务器端口的问题。 本帖最后由 talaon 于 2022-8-14 08:27 编辑
那到底是要用 file_get_contents 还是要用curl 呢
设置useragent,关闭证书验证。看一下浏览器的请求。尽量模拟浏览器的参数。 证书问题 如果是https加上这两句
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
shen1521 发表于 2022-8-15 17:07
如果是https加上这两句
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURL ...
加了,还是不行。 用selenium吧,可以浏览的一般都能爬下来