thinkphp5使用workerman定时器定时爬取某站点新闻资讯等内容
1、首先通过 composer 安装workerman,在thinkphp5完全开发手册的扩展-》coposer包-》workerman有详细说明:
#在项目根目录执行以下指令
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、在application里创建server模块,并在server里创建控制器 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
thinkphp5使用workerman定时器定时爬取某站点新闻资讯等内容的更多相关文章
- nodejs实现定时爬取微博热搜
The summer is coming " 我知道,那些夏天,就像青春一样回不来. - 宋冬野 青春是回不来了,倒是要准备渡过在西安的第三个夏天了. 废话 我发现,自己对 coding 这 ...
- selenium+BeautifulSoup+phantomjs爬取新浪新闻
一 下载phantomjs,把phantomjs.exe的文件路径加到环境变量中,也可以phantomjs.exe拷贝到一个已存在的环境变量路径中,比如我用的anaconda,我把phantomjs. ...
- Python爬取腾讯新闻首页所有新闻及评论
前言 这篇博客写的是实现的一个爬取腾讯新闻首页所有的新闻及其所有评论的爬虫.选用Python的Scrapy框架.这篇文章主要讨论使用Chrome浏览器的开发者工具获取新闻及评论的来源地址. Chrom ...
- Python 网络爬虫 007 (编程) 通过网站地图爬取目标站点的所有网页
通过网站地图爬取目标站点的所有网页 使用的系统:Windows 10 64位 Python 语言版本:Python 2.7.10 V 使用的编程 Python 的集成开发环境:PyCharm 2016 ...
- 使用Scrapy框架爬取腾讯新闻
昨晚没事写的爬取腾讯新闻代码,在此贴出,可以参考完善. # -*- coding: utf-8 -*- import json from scrapy import Spider from scrap ...
- 9个用来爬取网络站点的 Python 库
上期入口:10个不到500行代码的超牛Python练手项目 1️⃣Scrapy 一个开源和协作框架,用于从网站中提取所需的数据. 以快速,简单,可扩展的方式. 官网:https://scrapy.or ...
- python3爬虫-爬取新浪新闻首页所有新闻标题
准备工作:安装requests和BeautifulSoup4.打开cmd,输入如下命令 pip install requests pip install BeautifulSoup4 打开我们要爬取的 ...
- Python 利用 BeautifulSoup 爬取网站获取新闻流
0. 引言 介绍下 Python 用 Beautiful Soup 周期性爬取 xxx 网站获取新闻流: 图 1 项目介绍 1. 开发环境 Python: 3.6.3 BeautifulSoup: ...
- Python写网络爬虫爬取腾讯新闻内容
最近学了一段时间的Python,想写个爬虫,去网上找了找,然后参考了一下自己写了一个爬取给定页面的爬虫. Python的第三方库特别强大,提供了两个比较强大的库,一个requests, 另外一个Bea ...
随机推荐
- 替换空格(C++和Python 实现)
(说明:本博客中的题目.题目详细说明及参考代码均摘自 “何海涛<剑指Offer:名企面试官精讲典型编程题>2012年”) 题目 请实现一个函数,把字符串中的每个空格替换为 "%2 ...
- Linux ->> UBuntu 14.04 LTE下主机名称和IP地址解析
UBuntu 14.04 LTE下主机名称和IP地址解析一些相关的配置文件: /etc/hosts: 主机文件.手工配置IP地址和主机名称间的映射.格式为每行一条映射条项: <machine_n ...
- linux(centos)设置tomcat开机启动
方法一: linux 下tomcat开机自启动修改Tomcat/bin/startup.sh 为: export JAVA_HOME=/usr/java/j2sdk1.4.2_08 export CL ...
- JAVA环境变量安装
需配置的系统环境变量参数: JAVA_HOME:C:\Program Files\Java\jdk1.8.0_60 CLASS_PATH: ;%JAVA_HOME%\lib;%JAVA_HOME%\l ...
- 重新认识KCP
什么是KCP KCP是一种网络传输协议(ARQ,自动重传请求),可以视它为TCP的代替品,但是它运行于用户空间,它不管底层的发送与接收,只是个纯算法实现可靠传输,它的特点是牺牲带宽来降低延迟.因为TC ...
- SQLi-db 批量注入工具+教程
这款工具在中国还没人发.所以我发来给大家玩玩:顺便带了教程. 关键字:inurl:article.asp?id= inurl:article.php?id=inurl:article.jsp?id=( ...
- Quarzt定时调度任务
简介 Quarzt是一个项目中定时执行任务的开源项目,Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独 ...
- Java连接MQ的实例, 测试类
package cjf.mq.mqclient; import com.ibm.mq.MQC; import com.ibm.mq.MQEnvironment; import com.ibm.mq.M ...
- Java实现身份证号码验证源码分享
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; impor ...
- 当当网-前端project师測试题
前端project师測试题(笔试时间20分钟.面试时间20分钟) 一.笔试 1.基础问题 (1)前端页面有哪三层构成,各自是什么? ...