avatar

麦兜的小站

MDO.INK

  • 首页
  • 随笔
  • 知识库
  • 归档
  • 动态
  • 标签
  • 关于
Home DeepSeek - 探索ThinkPHP采集
文章

DeepSeek - 探索ThinkPHP采集

Posted 2025-01-31 Updated 2025-01- 31
By power 已删除用户
8~10 min read

在ThinkPHP框架中实现新闻采集功能,通常涉及以下几个步骤:

1. 安装ThinkPHP

首先,确保你已经安装并配置好了ThinkPHP框架。如果还没有安装,可以通过Composer进行安装:

composer create-project topthink/think your-project-name

2. 创建采集控制器

在ThinkPHP中,你可以创建一个控制器来处理新闻采集的逻辑。例如,创建一个CollectController:

php think make:controller Collect

3. 编写采集逻辑

在CollectController中编写采集新闻的逻辑。你可以使用PHP的file_get_contents或cURL来获取目标网站的HTML内容,然后使用正则表达式或DOM解析器(如simple_html_dom)来提取新闻数据。

namespace appcontroller;

use thinkController; use thinkfacadeDb;

class Collect extends Controller { public function index() {

    $url = 'https://example.com/news';


    $html = file_get_contents($url);


    preg_match_all('/<h2 class="news-title">(.*?)<\/h2>/', $html, $titles);
    preg_match_all('/<div class="news-content">(.*?)<\/div>/', $html, $contents);


    foreach ($titles[1] as $key => $title) {
        $data = [
            'title'   => $title,
            'content' => $contents[1][$key],
            'created_at' => date('Y-m-d H:i:s'),
        ];

        Db::name('news')->insert($data);
    }

    return '新闻采集完成!';
}

}

4. 配置数据库

在config/database.php中配置数据库连接信息。确保你已经创建了news表来存储采集到的新闻数据。

return [

'type'            => 'mysql',

'hostname'        => '127.0.0.1',

'database'        => 'your_database_name',

'username'        => 'your_username',

'password'        => 'your_password',

'hostport'        => '3306',

'prefix'          => '',

];

5. 创建新闻表

在数据库中创建news表:

CREATE TABLE `news` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL, `content` text NOT NULL, `created_at` datetime NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

6. 运行采集任务

你可以通过访问CollectController的index方法来运行采集任务。例如:

然后在浏览器中访问:

http://localhost:8000/collect/index

7. 定时任务(可选)

如果你希望定期自动采集新闻,可以使用ThinkPHP的命令行工具结合操作系统的定时任务(如Linux的cron)来实现。

创建一个命令行指令:

php think make:command CollectNews

在app/command/CollectNews.php中编写采集逻辑:

namespace appcommand;

use thinkconsoleCommand; use thinkconsoleInput; use thinkconsoleOutput; use thinkfacadeDb;

class CollectNews extends Command { protected function configure() { $this->setName('collect:news')->setDescription('采集新闻'); }

protected function execute(Input $input, Output $output)
{

    $url = 'https://example.com/news';
    $html = file_get_contents($url);

    preg_match_all('/<h2 class="news-title">(.*?)<\/h2>/', $html, $titles);
    preg_match_all('/<div class="news-content">(.*?)<\/div>/', $html, $contents);

    foreach ($titles[1] as $key => $title) {
        $data = [
            'title'   => $title,
            'content' => $contents[1][$key],
            'created_at' => date('Y-m-d H:i:s'),
        ];

        Db::name('news')->insert($data);
    }

    $output->writeln('新闻采集完成!');
}

}

然后可以通过以下命令手动运行采集任务:

最后,在Linux系统中设置cron定时任务:

添加以下内容,每天凌晨1点执行采集任务:

0 1 * * * /usr/bin/php /path/to/your/project/think collect:news

总结

通过以上步骤,你可以在ThinkPHP框架中实现新闻采集功能。你可以根据实际需求调整采集逻辑和定时任务的频率。

知识库
License:  CC BY 4.0
Share

Further Reading

Jul 31, 2025

如何实现接口幂等性

通俗的说,用户在系统中有操作,不管重复多少次,都应该产生一样的效果或返回一样的结果的。 幂等性的概念 幂等(Idempotent)是一个数学与计算机学的概念,常见于抽象代数中。 f(n)=1^n//无...

Jul 19, 2025

10个npm工具包

有了npm之后,前端人员真的是过上好日子了。我们可以直接把别人写好的工具包拿来用,非常的方便。 1.day.js-轻量日期处理 npminstalldayjs importdayjsfrom'd...

Jul 17, 2025

How to set up PHP7.4 on MacOS.

Thisisallverywellandgood.Apartfromonesmallinsignificantthing… TheversionofPHPinuseiscurrently7.4. Th...

OLDER

SSH无密码登录:只需两个简单步骤

NEWER

Vue + TypeScript + Element 项目

Recently Updated

  • 如何实现接口幂等性
  • 10个npm工具包
  • How to set up PHP7.4 on MacOS.
  • Automa:一键自动化,网页数据采集与工作流程优化专家Automa:解锁自动化
  • Mac 下用 brew 搭建 LNMP

Trending Tags

thinkphp clippings

Contents

©2025 麦兜的小站. Some rights reserved.

Using the Halo theme Chirpy