本站所有内容仅限用于学习和研究目的,如有侵权请邮件与我们联系处理!
世上事本无难易,为之则易!

网站首页 站群教程 原创站群教程 正文

分享一段采集文章段落、标题及实时热词的php代码

曹操 2023-05-31 原创站群教程 576 ℃ 0 评论 8288字 free 收藏

分享一段php采集句子、标题及实时热词的代码,用户可自定义存储路径,并设置成宝塔定时执行,自动扩充泛目录程序的内容库。

代码介绍

该 PHP 代码实现了数据采集的功能。具体来说,包括以下几个方面:

程序开头的注释提醒用户程序仅供断网状态下本地测试,勿上传网络,亦勿用于非法用途。

ini_set() 函数设置脚本最长执行时间为 100 秒。

header() 函数设置响应内容类型为 HTML,并指定编码为 utf-8。

sina() 函数采集新浪新闻文章:首先通过 file_get_contents() 函数获取新浪新闻页面内容,再用 preg_match_all() 函数解析该页面中所有的新闻链接地址(使用正则表达式);接着遍历这些链接,获取每篇新闻的标题和正文,从正文中按段落提取句子,并将句子保存到结果数组中;最后将结果数组中的内容写入文件(文件名包含当前日期时间)。

weibo() 函数采集微博热词:通过 file_get_contents() 函数获取微博 API 接口内容,解析 JSON 数据,提取热词文本并通过正则表达式过滤掉非中文字符,最后将结果保存到文件中。

sogou() 函数采集搜狗热词:通过 file_get_contents() 函数获取搜狗热词页面内容,从页面 HTML 中提取热词文本(使用正则表达式)并保存到结果数组中,最后将结果写入文件中。

toutiao() 函数采集今日热榜:遍历一系列网站页面链接,获取每个页面的 HTML 内容,提取页面中的表格数据(使用正则表达式)并将数据保存到结果数组中,去除 HTML 标签后将结果保存到文件中。

最后运行 sina()、weibo()、sogou() 和 toutiao() 四个函数即可实现数据采集。

需要注意的是,程序中可能存在代码访问限制,比如微博 API 接口需要通过 gsId 才能正常调用,而 gsId 随时可能会过期或失效。因此,如果要使用这个程序,需自行检查各个代码段是否仍然有效并针对实际情况进行修改。

完整代码

<?php
/**
 * 数据采集程序,仅供断网状态下本地测试,勿上传网络,亦勿用于非法用途
 */

// 限制脚本最长执行时间为 100 秒
ini_set('max_execution_time', 100);

// 设置响应内容类型为 HTML,并指定编码为 utf-8
header('Content-Type:text/html;charset=utf-8');

// 引入必要的函数库文件
require_once 'functions.php';

// 新浪新闻采集函数
function sina()
{
    // 定义结果数组
    $result = array();

    // 获取新浪新闻首页内容
    $content = file_get_contents('http://news.sina.com.cn/');

    // 正则匹配新闻链接地址
    preg_match_all('/<a href="(.+?)" target="_blank">(.+?)<\/a>/', $content, $matches);

    // 遍历每个链接获取新闻标题和正文中的句子
    foreach ($matches[1] as $url) {
        // 获取新闻页面内容
        $newsContent = file_get_contents($url);
        // 提取新闻标题和正文中的句子
        $title = getHtmlByTag($newsContent, 'title')[0];
        $content = getHtmlByClass($newsContent, 'article')[0];
        $sentences = getSentenceFromHtml($content);
        // 将句子加入结果数组
        $result = array_merge($result, $sentences);
    }

    // 将结果写入文件
    $filename = date('YmdHis', time()) . '_sina.txt';
    writeFile($filename, implode(PHP_EOL, $result));
}

// 微博热词采集函数
function weibo()
{
    // 定义结果数组
    $result = array();

    // 获取微博热搜API接口内容
    $content = file_get_contents('https://s.weibo.com/top/summary');

    // 解析JSON数据,获取热词
    $json = json_decode($content, true);
    foreach ($json['list'] as $item) {
        $text = preg_replace('/[^\x{4e00}-\x{9fa5}]/iu', '', $item['note']);
        $result[] = $text;
    }

    // 将结果写入文件
    $filename = date('YmdHis', time()) . '_weibo.txt';
    writeFile($filename, implode(PHP_EOL, $result));
}

// 搜狗热词采集函数
function sogou()
{
    // 定义结果数组
    $result = array();

    // 获取搜狗热门搜索页面内容
    $content = file_get_contents('https://www.sogou.com/sogou?query=热点新闻&type=bar');

    // 正则匹配热词
    preg_match_all('/<a href=".+?" target="_blank" id="\d+?" >(.+?)<\/a>/', $content, $matches);

    // 遍历热词,将结果保存到数组中
    foreach ($matches[1] as $text) {
        $result[] = $text;
    }

    // 将结果写入文件
    $filename = date('YmdHis', time()) . '_sogou.txt';
    writeFile($filename, implode(PHP_EOL, $result));
}

// 今日热榜采集函数
function toutiao()
{
    // 定义结果数组
    $result = array();

    // 要采集的网站链接
    $urls = array(
        'https://tophub.today/n/mproPpoq6O',//知乎
        'https://tophub.today/n/WnBe01o371',//微信
        'https://tophub.today/n/Jb0vmloB1G',//百度
        'https://tophub.today/n/Q1Vd5Ko85R',//36氪
        'https://tophub.today/n/Y2KeDGQdNP',//少数派
        'https://tophub.today/n/5VaobgvAj1',//虎嗅网
        'https://tophub.today/n/74Kvx59dkx',//IT之家
        'https://tophub.today/n/74KvxwokxM',//哔哩哔哩
        'https://tophub.today/n/DpQvNABoNE',//抖音
        'https://tophub.today/n/NRrvWq3e5z',//煎蛋
        'https://tophub.today/n/G47o8weMmN',//虎扑
        'https://tophub.today/n/X12owXzvNV',//雪球
        'https://tophub.today/n/0MdKam4ow1',//第一财经
        'https://tophub.today/n/x9ozBY7oXb',//财经网
        'https://tophub.today/n/rx9ozj7oXb',//新浪财经
    );

    // 遍历要采集的网站链接,获取其中的表格内容
    foreach ($urls as $url) {
        // 获取页面内容
        $content = file_get_contents($url);
        // 提取表格内容
        preg_match_all('/<tr>(.+?)<\/tr>/', $content, $matches);
        foreach ($matches[1] as $tr) {
            // 去除 HTML 标签,并将结果保存到数组中
            $text = strip_tags($tr);
            if ($text != '') {
                $result[] = $text;
            }
        }
    }

    // 将结果写入文件
    $filename = date('YmdHis', time()) . '_toutiao.txt';
    writeFile($filename, implode(PHP_EOL, $result));
}

// 运行采集函数
sina();
weibo();
sogou();
toutiao();
?>

代码解析

上面的代码并没有指定具体的保存路径,而是通过调用 `writeFile()` 函数将结果保存到一个以时间命名的文件中。

具体的保存路径将由 `writeFile()` 函数自动确定,保存在当前脚本所在的目录下。

例如,如果当前脚本保存在 `/var/www/html` 目录下,那么结果文件将保存在 `/var/www/html` 目录下,并以类似 `20230531072002_sina.txt` 的文件名命名。

目录导航
  • 代码介绍
  • 完整代码
  • 代码解析

  • Tags:泛目录泛目录程序搜狗

    必看说明

    • 本站中所有被研究的素材与信息全部来源于互联网,版权争议与本站无关。
    • 本站文章或仅为文本内容原创,非程序原创。如有侵权、不妥之处,请联系站长第一时间删除。敬请谅解!
    • 本站所有内容严格遵守国家法律的条例,所有研究的算法技术均来源于搜索引擎公开默认允许用户研究使用的接口。
    • 阅读本文及获取资源前,请确保您已充分阅读并理解《访问曹操SEO网站需知:行为准则》。
    • 本站分享的任何工具、程序仅供学习参考编写架构,仅可在本地的虚拟机内断网测试,严禁联网运行或上传搭建!
    • 任何资源必须在下载后24个小时内,从电脑中彻底删除。不得传播或者用于其他任何用途!否则一切后果用户自负!
    • 转载请注明 : 文章转载自  曹操SEO 分享一段采集文章段落、标题及实时热词的php代码
    • 本文标题:《分享一段采集文章段落、标题及实时热词的php代码》
    • 本文链接:https://www.ccooc.cn/1993.html

    本文暂时没有评论,来添加一个吧(●'◡'●)

    欢迎 发表评论:

    网站分类
    近期评论
    文章归档
    标签列表
    站点信息
    • 文章总数:2021
    • 页面总数:7
    • 分类总数:46
    • 标签总数:340
    • 评论总数:8895
    • 浏览总数:5175133