当前位置: 首页 > news >正文

用正则表示式分析网页

昨晚现学现卖了一下正则表达式,记录一下

爬的网页:http://www.qiushibaike.com/hot/page/1/?s=4930745

首先来看源码

<a href="/users/13145907/" target="_blank" rel="nofollow">
<img src="http://pic.qiushibaike.com/system/avtnew/1314/13145907/medium/20140731141650.jpg" alt="一个小时的好汉"/>
</a>
<a href="/users/13145907/" target="_blank" title="一个小时的好汉">
<h2>一个小时的好汉</h2>
</a>
<div class="articleGender manIcon">28</div>
</div>
<a href="/article/117979974" target="_blank" class='contentHerf' >
<div class="content">
<span>今天给儿子去买小笼包,旁边有个拾荒的老大爷手里就拿着一块钱问,包子怎么卖,老板说五块一笼,抬头看老大爷愣了一下,老大爷转身缓缓的走了,就听见老板在后面喊,老大爷,小笼包五块一笼,这里的包子一块钱三个,老板从别的大笼里面,夹出三个热腾腾的大肉包,当时有点莫名的感动!老板你是个好人</span>
</div>
</a>
<div class="stats">
<span class="stats-vote"><i class="number">13550</i> 好笑</span>
<span class="stats-comments">
<span class="dash"> · </span>
<a href="/article/117979974" data-share="/article/117979974" id="c-117979974" class="qiushi_comments" target="_blank">
<i class="number">457</i> 评论

  获取的源码里还有很多空格,这里为了显示方便手动删去了,其中加粗的部分,就是要获得的作者、内容、点赞数、评论数,这里首先强调一下一个很有用的表达式:

.*?

.*可以匹配任意多个字符,?指非贪婪模式,即会在满足条件的情况下尽可能短,经过多次实验,要匹配这种整段的还是不能偷懒,多用一些有特征的语句,比如

<div class="stats">,这种具有特殊性,多用几个就可以限定整段,需要注意的是换行符也需要匹配一下,现在详细说明一下

1. <a href="/users.*?title=" 匹配

<a href="/users/13145907/" target="_blank" rel="nofollow">
<img src="http://pic.qiushibaike.com/system/avtnew/1314/13145907/medium/20140731141650.jpg" alt="一个小时的好汉"/>
</a>
<a href="/users/13145907/" target="_blank" title="

  开始用的是<a.*?title=",发现<a开头的太多了,匹配了过多的内容,记得勾选正则表示式和.匹配新行,效果如下:

 2.<a href="/users.*?title=".*?">.*?<div class="content">

 3. <a href="/users.*?title=".*?">.*?<div class="content">.*?<span>.*?</span>.*?"number">.*?</i>.*?number">.*?</i> 匹配全部

 

转载于:https://www.cnblogs.com/ajmd/p/6068774.html

相关文章:

  • iOS AFNetworking 打印从服务器返回的错误提示信息
  • Ubuntu16.04安装网易云音乐
  • OC 图片圆角实现
  • 常用设计模式之适配器
  • 加速度传感器检测物体倾角的原理
  • codeforces 734E(DFS,树的直径(最长路))
  • php-fpm服务启动脚本
  • html关于图片和链接的笔记
  • jQuery 语法
  • 【FFMPEG】FFMPEG介绍
  • [原创软件]Maya语言切换工具
  • 【GoLang】GoLang 错误处理 -- 异常处理思路示例
  • Tower 实战一:MavLink的连接与通信
  • hive 数据清理--数据去重
  • rails生成器生成自定义controller模板
  • #Java异常处理
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 4. 路由到控制器 - Laravel从零开始教程
  • C# 免费离线人脸识别 2.0 Demo
  • CentOS 7 防火墙操作
  • const let
  • ES6系列(二)变量的解构赋值
  • github指令
  • iOS 颜色设置看我就够了
  • mysql中InnoDB引擎中页的概念
  • React16时代,该用什么姿势写 React ?
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • 从0到1:PostCSS 插件开发最佳实践
  • 分享一份非常强势的Android面试题
  • 将回调地狱按在地上摩擦的Promise
  • 解析带emoji和链接的聊天系统消息
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 前端攻城师
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 微服务核心架构梳理
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 06-01 点餐小程序前台界面搭建
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • # 计算机视觉入门
  • #微信小程序:微信小程序常见的配置传值
  • $().each和$.each的区别
  • (52)只出现一次的数字III
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (Ruby)Ubuntu12.04安装Rails环境
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (转)Linq学习笔记
  • (转)我也是一只IT小小鸟
  • (转)重识new
  • ***通过什么方式***网吧
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .mysql secret在哪_MYSQL基本操作(上)
  • .net Application的目录