本文最后更新于2021年09月04日,已超过282天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!
今天2021-09-03 15:54:31 星期五 最近两天在写一个数据抓取的工具,主要是因为要经常统计数据是在是太麻烦了,可能是因为我懒吧哈哈哈
数据抓取当然是需要先获取接口地址了,这个直接用浏览器的控制台就可以了。具体操作如下:
拿到接口访问看到是json形式的,这种比较容易调用,那么我们可以用服务器读取,后先转化为php可以操作的数组。
再看下url的的参数发现是get请求的分页,所以我们也可以自定义请求参数来获取不同的数据
但是,发现需要ciookie才能正常读取数据,所以我们需要创建一个curl的对话模拟真实用户访问,也抓取ciokkie
带ciookie请求代码如下(url和ciookie参数行添加)
代码语言:javascript复制//下面是允许请求跨域,跨域删除
/*作者:田小檬
时间:2021-09-04 00:31:25 星期六
*/
header('Content-Type: text/html;charset=utf-8');
header('Access-Control-Allow-Origin:*'); // *代表允许任何网址请求
header('Access-Control-Allow-Methods:POST,GET,OPTIONS,DELETE'); // 允许请求的类型
header('Access-Control-Allow-Credentials: true'); // 设置是否允许发送 cookies
header('Access-Control-Allow-Headers: Content-Type,Content-Length,Accept-Encoding,X-Requested-with, Origin');
$headers = array(
'Authorization:'.'bearer 87d1a782-193b-423a-8097-fb8285f6bc05',
);//授权认证
$curl = curl_init(); // 启动一个CURL会话
curl_setopt($curl, CURLOPT_URL, $urls); // 要访问的地址
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); // 从证书中检查SSL加密算法是否存在
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
//添加POST请求如果需要请添加参数
/*作者:田小檬
时间:2021-09-04 00:31:25 星期六
*/
curl_setopt($curl, CURLOPT_POST,1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
//
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
curl_setopt($curl, CURLOPT_COOKIE, $cookies); // 带上COOKIE请求
curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
$result = curl_exec($curl); // 执行操作
// $add = json_decode($result, true);//如果返回json请取消注释
/*作者:田小檬
时间:2021-09-04 00:31:25 星期六
*/
if (curl_errno($curl)) {
echo 'Errno'.curl_error($curl);//捕抓异常
}
curl_close($curl); // 关闭CURL会话
return $result;//如果返回json请注释
//return json($add);//如果返回json请取消注释
/*作者:田小檬
时间:2021-09-04 00:31:25 星期六
*/
现在,可以正常请求了,然后读取,再自定义去输出就可以了,我这里是直接输出的表格