Hyperf2.1框架中GuzzleHttp组件的使用方式,实现采集网站文章的功能demo
swoole  /  管理员 发布于 3年前   3758
hyperf框架中GuzzleHttp组件的使用分原生写法跟协程化写法,下面分别都用一下
使用GuzzleHttp组件包测试功能:因为后面我需要做一个采集功能,
所以我简单模拟去采集一下网站一个文章的数据
安装:
hyperf2.1组件包默认已经安装直接用就ok,
开始开发功能
测试控制器中
<?php
declare(strict_types=1);
namespace App\Controller;
use Hyperf\HttpServer\Contract\ResponseInterface;
use Hyperf\Guzzle\ClientFactory;
use Hyperf\HttpServer\Annotation\AutoController;
/**
* @AutoController()
*/
class TestController
{
/**
* @var \Hyperf\Guzzle\ClientFactory
*/
private $clientFactory;
public function __construct(ClientFactory $clientFactory)
{
$this->clientFactory = $clientFactory;
}
public function index(ResponseInterface $response)
{
return $response->json('测试专用控制器');
}
/**
* GuzzleHttp原生写法
*/
public function test1(RequestInterface $request,ResponseInterface $response)
{
//原生写法
$client = new \GuzzleHttp\Client();
$resp = $client->request('GET', 'http://www.zongscan.com/demo333/178.html',[]);
//获取页面数据
$content = $resp->getBody()->getContents();
//通过 preg_replace 函数使页面源码由多行变单行
$htmlOneLine = preg_replace("/\r|\n|\t/","",$content);
//获取这个标签及里面的内容
preg_match("/<div class=\"jumbotron\">(.*)<\/div>/iU",$htmlOneLine,$titleArr);
$string = $titleArr[0];
//去掉html标签
$string = strip_tags($string);
$string = strtr($string, array(" " => ''));
return $response->json($string);
//return 'test-Hyperf';
}
/**
* GuzzleHttp协程写法
*/
protected function Crawler($url)
{
// $options 等同于 GuzzleHttp\Client 构造函数的 $config 参数
$options = [];
// $client 为协程化的 GuzzleHttp\Client 对象
$client = $this->clientFactory->create($options);
$resp = $client->request('GET', $url,[]);
//响应状态码
//$http_status = $resp->getStatusCode();
//获取页面数据
$content = $resp->getBody()->getContents();
//通过 preg_replace 函数使页面源码由多行变单行
$htmlOneLine = preg_replace("/\r|\n|\t/","",$content);
//获取这个标签及里面的内容
preg_match("/<div class=\"jumbotron\">(.*)<\/div>/iU",$htmlOneLine,$titleArr);
$string = $titleArr[0];
//去掉html标签
$string = strip_tags($string);
$string = strtr($string, array(" " => ''));
return $response->json($string);
}
看看效果: 两个都一样的输出
完
123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..路人 在
php中使用hyperf框架调用讯飞星火大模型实现国内版chatgpt功能示例中评论 教程很详细,如果加个前端chatgpt对话页面就完美了..Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号