偷数据遇到的坑
有些资源站,新闻站等,当我们需要爬取它数据的时候他是有反爬取机制的,通过PHP去抓数据的时候,数据一层不变,而实际上他是动态改变的,一般是token
或者是cookie
验证,不知道为什么他们要这么做,因为这些手段在PHP面前显得多么苍白无力。
Cookie 验证解决办法
<?php
$cookie_file = dirname(__FILE__).'/cookie.txt'; //定义cookie存放位置 手动创建该文件
//先获取cookies并保存
$url = "url";
$ch = curl_init($url); //初始化
curl_setopt($ch, CURLOPT_HEADER, 0); //不返回header部分
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //返回字符串,而非直接输出
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); //存储cookies
curl_exec($ch);
这样我们就事先模拟了该URL的访问,并将他的Cookie存放到了文件里面,下次再请求数据的时候,直接取文件里面的cookie跟着请求送过去就OK了。一般将此文件定时执行,因为cookie有生命周期。
Curl请求数据方法
$memeda = file("cookie.txt")[4];
$cook = substr($memeda,46);//获取文件里面需要的数据
$url ="url";
$ch = curl_init();
//设置选项,包括URL
$cookie = "id=".$cook;//拼接拿到的cookie
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_COOKIE, $cookie);//带cookie发数据
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
//执行并获取HTML文档内容
$output = curl_exec($ch);
//释放curl句柄
curl_close($ch);
echo $output;
爬大姐姐