php登录抓取网页指定内容(外汇需求描述需要抓取某金融网站的期货数据(图))

优采云 发布时间: 2021-09-30 08:09

  php登录抓取网页指定内容(外汇需求描述需要抓取某金融网站的期货数据(图))

  需求描述

  需要抓取某金融网站的期货数据,打开浏览器的开发者模式,找到界面url,响应数据正是我们想要的,但是当我们在浏览器地址栏输入url时,我被重定向到网站的期货主页,没有检索到数据。

  解决方案

  找到请求的header,在我们的curl请求代码中添加header参数来模拟浏览器访问,如下图:

  

  将此头信息添加到我们的代码中,如下所示:

  

  抓取数据后,发现数据是乱码,如下图:

  

  检查后,对返回的数据进行压缩,并添加curl参数:

  curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate');//解析gzip,deflate内容

  再次发出请求,成功返回数据:

  

  下面附上程序的主要代码;

  public function catchData(){

$url="https://cn.investing.com/common/modules/js_instrument_chart/api/data.php?pair_id=8830&pair_id_for_news=8830&chart_type=area&pair_interval=3600&candle_count=120&events=yes&volume_series=yes&period=";

$headers=[

'Accept:text/html,application/xhtml+xml,application/xml,application/json, text/javascript, */*; q=0.01',

'Accept-Encoding:gzip, deflate, br',

'Accept-Language:en-US,en;q=0.5',

'Cache-Control:max-age=0',

'Connection:keep-alive',

'Cookie:StickySession=id.22115874781.5…gat=1; _gat_allSitesTracker=1',

'Host:cn.investing.com',

'Referer:https://cn.investing.com/commodities/gold',

'User-Agent:Mozilla/5.0 (X11; Ubuntu; Linu…) Gecko/20100101 Firefox/65.0',

'X-Requested-With:XMLHttpRequest',

];

$ch = curl_init();//初始化curl

curl_setopt($ch, CURLOPT_URL,$url);//抓取指定网页

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);//指定头部参数

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//结果不输出到屏幕上

curl_setopt($ch, CURLOPT_POST, 0);

curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate');//这个是解析gzip,deflate压缩的内容

$data = curl_exec($ch);//运行curl

curl_close($ch);

print_r($data);

}

  博主留言

  我今天已经处理了这个问题 1.2 个小时。我觉得有必要记录一下。有同样问题的朋友可以参考。

  你很少写博客。写得不好请轻描淡写。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线