php如何抓取网页数据库(,两次抓取的情况第二次请求需要第一次数据抓取流程 )

优采云 发布时间: 2021-09-15 02:19

  php如何抓取网页数据库(,两次抓取的情况第二次请求需要第一次数据抓取流程

)

  PHP 数据抓取,CURL 更简单

  这里,在两次抓取的情况下,第二次请求需要第一次数据抓取的结果

  例如:提交数据时需要页面上的token

  获取过程。

  1.抓取页面,分析页面获取token

  2.提交数据,带上第一次获得的token

  存在的问题

  令牌通过session保存在后台

  第1步取数据时和第2步取数据时

  curl请求实际上是2个不同的请求,所以sessionid不一样

  结果,第二次请求与第一次获得的token一致

  数据还未验证

  解决方案:

  关键部分 CURLOPT_COOKIEJAR 使用 cookie 来存储请求的数据

  $ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url); // 要访问的地址

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 对*敏*感*词*来源的检查

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在

curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.69 Safari/537.36"); // 模拟用户使用的浏览器

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转

curl_setopt($ch, CURLOPT_COOKIEJAR, './cookie.txt'); // 关键部分, 使用cookie存储

curl_setopt($ch, CURLOPT_POST, 1); // 发送一个常规的Post请求

curl_setopt($ch, CURLOPT_POSTFIELDS, $data); // Post提交的数据包

curl_setopt($ch, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环

curl_setopt($ch, CURLOPT_HEADER, 0); // 显示返回的Header区域内容

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回

$response = curl_exec($ch);

curl_close($ch);

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线