php可以抓取网页数据吗(一个普通请求封装方法,代码如下:前后修改过几次)

优采云 发布时间: 2021-10-01 05:15

  php可以抓取网页数据吗(一个普通请求封装方法,代码如下:前后修改过几次)

  肯德基的一些数据最近需要抓取

  通过邮递员获取请求地址和参数后,可以返回数据

  

  我天真地认为我可以通过代码直接发送post请求

  但是,在通过PHP curl模拟请求之后,总是返回服务器异常

  

  起初似乎很成功,但现在总是有报道。我使用一种普通的post请求封装方法。代码如下:

  

public function kfc_post($url, $data)

{

$data['deviceId'] = '819ce973-1ff8-4dfc-8436-4e0e0e1efb6e';

$data['brower_id'] = 'unique-test-dc6d945b-d504-45f7-ad94-8eaacb590fcf';

$params = http_build_query($data);

$headers = [

'Accept' => 'application/json, text/plain, */*',

'Content-Type' => 'application/x-www-form-urlencoded',

'Origin' => 'http://order.kfc.com.cn',

'Referer' => 'http://order.kfc.com.cn/mwos/store',

'User-Agent' => 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1'

];

// 模拟提交数据函数

$curl = curl_init(); // 启动一个CURL会话

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

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

curl_setopt($curl, CURLOPT_POSTFIELDS, $params); // Post提交的数据包

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

curl_setopt($curl, CURLOPT_HTTPHEADER,$headers);

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

$content = curl_exec($curl); // 执行操作

curl_close($curl); // 关闭CURL会话

return json_decode($content, true);

}

  它前后都被修改了好几次,但基本上是这样的。请求仍然失败。我没有玩过去捕捉别人的网站数据。是否存在任何疏忽,例如cookies?我试图提出一个饼干请求,但我还是不能,所以我不知道为什么

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线