PHP 数据抓取
2019-04-23 17:51
127 查看
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fendouweiqian/article/details/89477624
PHP 数据抓取, CURL比较容易
这里说下, 两次抓取的情况, 第二次请求需要第一次数据抓取的结果
例如: 数据提交的时候需要页面上的token
抓取流程.
1. 抓取页面, 分析页面获取token
2. 提交数据, 带上第一次获取的token
存在的问题
token是在后台通过session保存起来的
而步骤1抓取数据的时候跟步骤2抓取数据的时候
curl请求实际上是视为2次不同的请求, 所以sessionid并不一样
导致第二次请求就算是带上了第一次获取到的token
数据仍然是验证不通过的
解决方案:
关键部分 CURLOPT_COOKIEJAR 采用cookie存储请求的数据
[code]$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);
相关文章推荐
- PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
- python&php数据抓取、爬虫分析与中介,有网址案例
- PHP抓取网络数据的6种常见方法
- php抓取数据遇到Transfer-Encoding chunked
- PHP登入网站抓取并且抓取数据
- PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
- 【php网页爬虫】php抓取网页数据
- PHP网络数据抓取方法
- PHP使用cURL抓取数据
- 网络爬虫之php抓取json,xml,js,html示例分析及数据解析
- php中封装的curl函数(抓取数据)
- PHP抓取网络数据的6种常见方法
- C实现PHP扩展《Fetch_Url》类数据抓取
- php 正则表达式爬网(从table-tr-td中抓取数据,转换成json)
- PHP的cURL库功能简介 抓取网页、POST数据及其他
- [demo]建立一个基础的MySQL数据库,并使用PHP来抓取和处理数据,并抛出给前台
- PHP的cURL库:抓取网页,POST数据及其他,HTTP认证 抓取数据
- PHP的cURL库功能简介:抓取网页,POST数据及其他
- 简单的PHP爬虫抓取百度贴吧用户数据