加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式的简单应用:使用正则表达式采集腾讯新闻

发布时间:2020-12-14 04:27:50 所属栏目:百科 来源:网络整理
导读:正则表达式的简单应用:使用正则表达式采集腾讯新闻 正则表达式 (Regular Expression)是比较繁琐的,要记的东西比较多,因此我一直都没有腾出时间专门好好研究一下正则表达式,最近网站需要用到PHP的CURL获取腾讯新闻,所以就认真地学了一下正则表达式。正

正则表达式的简单应用:使用正则表达式采集腾讯新闻

正则表达式(Regular Expression)是比较繁琐的,要记的东西比较多,因此我一直都没有腾出时间专门好好研究一下正则表达式,最近网站需要用到PHP的CURL获取腾讯新闻,所以就认真地学了一下正则表达式。正则表达式是非常强大的,学会了正则表达式,在以后的文本匹配中,那是杠杠的。话不多说,进入正题。

关于正则表达式的一些基础语法,大家可以看一下下面的参考链接,讲解非常到位。

引用《深入正则表达式应用》的“正则三段论”:定锚点,去噪点,取数据

1.首先,我想要从http://tech.qq.com/获取科技新闻头条,以及新闻列表,如图所示。



2.点击“查看网页源代码”Ctrl+ F找到我们需要的那一段代码,如图



可以发现每个标签都有一个新闻标签都是由“Q-tpListInner”的div包起来的,,并且我们要取出的url 在a 标签的href中, 要取的新闻标题在img的alt中,这就是传说的“定锚点、去噪点”的过程了;

3.然后就是直接用正则表达式取出我们需要的数据了。

新闻列表的正则表达式:

'/Q-tpListInner.*?href="(.*?)".*?alt="(.*?)">/s';

科技新闻标题的正则表达式:

'/<div class="txt"bosszone="Headlines_tech_1">.*?href="(.*?)".*?>(.*?)</a>/s';

PHP源代码:

function techNews() {
//    PS:PHP的CURL请自行补脑
    $url = 'http://tech.qq.com';
    $ch = curl_init($url);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    $content = curl_exec($ch);
    curl_close($ch);
    $content = iconv('gb2312','utf-8//IGNORE',$content);   //修改字符编码
    /*
     * 获取腾讯新闻头条
     */
    $data = array();
    $data_cnt = 0;
    $matches = array();
    $pattern = '/<div class="txt" bosszone="Headlines_tech_1">.*?href="(.*?)".*?>(.*?)</a>/s';
    preg_match($pattern,$content,$matches);
    $data[$data_cnt]['url'] = $matches[1];
    $data[$data_cnt++]['intro'] = $matches[2];
    /*
     * 获取腾讯新闻列表
     */
    $matches = array();
    $pattern = '/Q-tpListInner.*?href="(.*?)".*? alt="(.*?)">/s';
    preg_match_all($pattern,$matches);
//    var_dump($matches);
    for ($i = 0; $i < count($matches[1]); $i++) {
        $data[$data_cnt]['url'] = $matches[1][$i];
        $data[$data_cnt++]['intro'] = $matches[2][$i];
    }
    var_dump($data);
}

运行结果截图:


如果出现乱码,转化一下字符编码就行了。

参考链接:

[1] 正则表达式30分钟入门教程http://www.aspzz.cn/tools/zhengze.html

[2] 我眼里的正则表达式(入门)http://www.zjmainstay.cn/my-regexp

[3] 深入正则表达式应用 http://www.zjmainstay.cn/deep-regexp

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读