小编近期开发一个php抓取网站内容功能,由于网站做了一些防止抓取限制。小编废了好大劲才破译。
首先小编不知道网站做了怎样的阻止。在抓取时总是会报错 如下图:
开始使用模拟header头请求该网站但是还是无效试了无数种可能,请求的 cookie ,以及一切请求参数都找到通过curl配置好,就是不行。
最终,找到一个gzip压缩格式抓取,需要在phpcurl中设置代码: curl_setopt($ch,CURLOPT_ENCODING , “gzip”); 自己试用一下居然打开了该网站
抓取到了该页面,当我继续通过正则获取需要的数据时问题又出现了,始终抓取为空。看到了,却抓取不到呢,经过一系列的搜索,以及试探
才找到问题所在需要把抓取的数据存储到指定变量中。代码: curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); 这是设置把抓取到的数据放到一个变量中。自己在通过变量来获取即可。
具体请求完整代码如下。代码很少,但是却让我很费脑筋。
$ch =curl_init();
curl_setopt($ch,CURLOPT_URL,”www.xxxx.com”);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_ENCODING , “gzip”);
$content = curl_exec($ch);
curl_close($ch);
之后即可通过preg_match();获取自己想要的数据。小编技术比较低,这点研究了好久。应该是一些基础。希望能对大家有所帮助。