이 기사의 내용은 thinkphp5가 특정 사이트의 뉴스 정보를 정기적으로 크롤링하는 방법에 대한 것입니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다. 전체 개발 설명서의 "coposer 패키지"에 작곡가를 통해 Workererman을 설치하는 방법에 대한 자세한 지침이 있습니다. Workererman:
#在项目根目录执行以下指令 composer require topthink/think-worker
2. 프로젝트 루트 디렉터리에 서비스 시작 파일 server.php를 생성합니다:
<?php define('APP_PATH', __DIR__ . '/application/'); define("BIND_MODULE", "server/Worker"); // 加载框架引导文件 require __DIR__ . '/thinkphp/start.php';
3 . 애플리케이션 모듈에서 서버를 생성하고 서버에 Worker.php 컨트롤러를 생성합니다:
<?php namespace app\server\controller; use think\worker\Server; class Worker extends Server { public function onWorkerStart($work) { $handle=new Collection(); $handle->add_timer(); } }
4. Collection.php 클래스 생성
<?php namespace app\server\controller; use app\common\model\ArticleModel; use think\Controller; use Workerman\Lib\Timer; class Collection extends Controller{ public function __construct(){ parent::__construct(); } public function add_timer(){ Timer::add(10, array($this, 'index'), array(), true);//时间间隔过小,运行会崩溃 } /** * 采集数据 */ public function index(){ $total=$this->get_jinse(); return json(['msg'=>"此次采集数据共 $total 条。",'total'=>$total]); } /** * 获取金色财经资讯 */ public function get_jinse(){ $url="https://api.jinse.com/v4/live/list?limit=20"; $data=$this->get_curl($url); $data=json_decode($data); $data=$data->list[0]->lives; $validate=validate('Article'); $items=[]; foreach ($data as $k=>$v){ preg_match('/【(.+?)】(.+)/u',$v->content,$content); if(!@$content[2]){ continue; } $list=array( 'source_id'=>$v->id, 'source'=>'金色财经', 'title'=>trim(preg_replace('/.*\|/','',$content[1])), 'content'=>$content[2], ); if($validate->check($list)){ $items[]=$list; } } if($items){ krsort($items); $model=new ArticleModel(); $model->saveAll($items); } return count($items); } public function get_curl($url){ $ch=curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_HEADER,0); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); $output = curl_exec($ch); if($output === FALSE ){ echo "CURL Error:".curl_error($ch); } curl_close($ch); // 4. 释放curl句柄 return $output; } }
5. 서비스 시작 php server.php start
관련 권장 사항:
Thinkphp의 템플릿 상속이란 무엇인가요? 템플릿 상속의 예PHP를 사용하여 사용자 이름과 비밀번호(코드)를 확인하는 방법위 내용은 thinkphp5는 작업자 타이머를 사용하여 정기적으로 사이트 콘텐츠 코드를 크롤링합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!