正则表达式的简单应用:使用正则表达式采集腾讯新闻
来源:互联网 发布:刘涛网络直播视频 编辑:程序博客网 时间:2024/06/05 23:54
正则表达式的简单应用:使用正则表达式采集腾讯新闻
正则表达式(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, $content, $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);
- }
运行结果截图:
如果出现乱码,转化一下字符编码就行了。
0 0
- 正则表达式的简单应用:使用正则表达式采集腾讯新闻
- 正则表达式的简单应用:使用正则表达式采集腾讯新闻
- 正则表达式的简单应用
- 正则表达式的简单应用
- 正则表达式的简单应用
- 正则表达式简单应用
- 正则表达式的简单使用
- 正则表达式的简单使用
- 正则表达式的简单使用
- 正则表达式的简单使用
- 正则表达式---简单使用
- 正则表达式简单使用
- JAVA中正则表达式的简单应用
- 正则表达式的简单应用实例
- C#正则表达式的简单应用.
- JAVA 简单的正则表达式应用
- 正则表达式匹配中文的简单应用
- 正则表达式的应用
- SpringMVC 文件上传配置,多文件上传,使用的MultipartFile
- org.hibernate.MappingException: Unknown entity
- 运算符和表达式
- 【事务】——事务简介——基础篇
- 国内优秀Android学习资源
- 正则表达式的简单应用:使用正则表达式采集腾讯新闻
- 谈谈iOS延迟调用--对比NSTimer、performSelector和dispatch_after
- Java线程:线程的同步与锁
- Keil C51重定向printf到串口
- 多态练习1
- apache-tomcat-7.0.40加大内存配置
- 【Unity3D游戏开发学习笔记】(七)上帝之眼—第三人称摄像机的简单实现(跟随视角,自由视角)
- listview一些方法
- 全景视频拼接(二)--OpenCV源码解析