[ laravel爬虫实战--基础篇 ] guzzle使用响应,获取header以及页面代码
Song •
7096 次浏览 •
0个评论 •
2017年11月01日
前面的例子里,我们取到了$response
变量,或者从Promise
得到了响应,Response
对象实现了一个PSR-7
接口 Psr\Http\Message\ResponseInterface
;包含了很多有用的信息,但是比较乱,那么我们怎么去获取我们想要的信息呢?
你可以获取这个响应的状态码和和原因短语(reason phrase):
$code = $response->getStatusCode(); // 200
$reason = $response->getReasonPhrase(); // OK
你可以从响应获取头信息(header),更多信息直接参考就可以了:
// 判断是否有请求头
if ($response->hasHeader(Content-Length)) {
echo "It exists";
}
// 从请求头中获取一个参数.
echo $response->getHeader(Content-Length);
// 获取全部的请求头.
foreach ($response->getHeaders() as $name => $values) {
echo $name . : . implode(, , $values) . "\r\n";
}
使用getBody
方法可以获取响应的主体部分(body),主体可以当成一个字符串或流对象使用
$body = $response->getBody();
// Implicitly cast the body to a string and echo it
echo $body;
// Explicitly cast the body to a string
$stringBody = (string) $body;
// 获取body中的10个字节
$tenBytes = $body->read(10);
// 将正文的剩余内容作为字符串读取。
$remainingBytes = $body->getContents();
下面我们来看一个完成的请求并且获取页面代码的demo
:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use GuzzleHttp\Client;
class SpiderController extends Controller
{
public function test()
{
$client = new Client();
$response = $client->request(GET,"https://phpartisan.cn");
// 获取头部信息
$header = $response->getHeaders();
// 获取html
$body = $response->getBody();
// 如果你想直接输出代码,可以取消如下注视
// dd($header);
echo $body;
// 转换为字符串
$stringBody = (string) $body
// 从body中读取10字节
$tenBytes = $body->read(10);
// 将body内容读取为字符串
$remainingBytes = $body->getContents();
}
}
提交评论
请登录后评论
用户评论
当前暂无评价,快来发表您的观点吧...
更多相关好文
-
laravel中distinct()的使用方法与去重 2017-09-11
-
Laravel将view缓存为静态html,laravel页面静态缓存 2021-10-09
-
[ laravel爬虫实战--基础篇 ] guzzle描述与安装 2017-11-01
-
[ 配置教程 ] 在ubuntu16.04中部署LNMP环境(php7+maridb且开启maridb远程以及nginx多域名访问 )并配置laravel环境 2017-07-18
-
Laravel模型更新全表如何实现? 2024-03-11
热门文章
-
Laravel模型更新全表如何实现? 2024-03-11
-
php图片转为二进制数据的方法 2023-10-23
-
Jquery如何监听动态创建元素的点击事件? 2023-09-08
-
所以SheetJS实现table导出数据为Excel 2023-09-05
-
ubuntu crontab设置定时任务教程以及常见命令合集 2023-08-21
[ laravel爬虫实战--进阶篇 ] guzzle实现多张图片上传