猫喝的果粒橙 发表于 2022-8-13 20:29:34

心血来潮仿个站,发现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:31:21

本帖最后由 猫喝的果粒橙 于 2022-8-13 20:39 编辑

外网的缘故?可是浏览器访问是正常的。

猫喝的果粒橙 发表于 2022-8-13 20:44:58

@戴维的个人博客:不是这个原因,因为其它https的网站是可以抓取的,而且加上这两句,目标网站还是无法获取源代码呀。

猫喝的果粒橙 发表于 2022-8-13 21:28:59

Curl error: Unknown SSL protocol error in connection to twblg.dict.edu.tw:443
好像是服务器端口的问题。

talaon 发表于 2022-8-14 08:26:33

本帖最后由 talaon 于 2022-8-14 08:27 编辑

那到底是要用 file_get_contents 还是要用curl 呢

小闲云野鹤 发表于 2022-8-14 10:18:56

设置useragent,关闭证书验证。看一下浏览器的请求。尽量模拟浏览器的参数。

tv002 发表于 2022-8-14 15:35:59

证书问题

shen1521 发表于 2022-8-15 17:07:17

如果是https加上这两句
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
       

猫喝的果粒橙 发表于 2022-8-15 22:16:50

shen1521 发表于 2022-8-15 17:07
如果是https加上这两句
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl, CURL ...

加了,还是不行。

萧梦 发表于 2022-8-16 08:45:00

用selenium吧,可以浏览的一般都能爬下来
页: [1] 2 3
查看完整版本: 心血来潮仿个站,发现file_get_contents函数抓取不了数据,求助……