正则表达式 在爬虫中的应用

By | 2017年3月9日

例一

<!\-\-repaste\.title\.begin\-\->(.+?)<!\-\-repaste\.title\.end\-\->

匹配

<h1><!–repaste.title.begin–>塞拉利昂前部长一家九口感染埃博拉病毒全部丧命<!–repaste.title.end–></h1>

里面的title

发现,各种转义加上的\,中间的 . 是匹配任意除换行外的字符, +?是重复任意次,小括号来指定子表达式(也叫做分组),

小括号的用法说明举例

(\d{1,3}\.){3}\d{1,3}是一个简单的IP地址匹配表达式。要理解这个表达式,请按下列顺序分析它:\d{1,3}匹配1到3位的数字(\d{1,3}\.){3}匹配三位数字加上一个英文句号(这个整体也就是这个分组)重复3次,最后再加上一个一到三位的数字(\d{1,3})。

例二

(<span class=”info”><em.*?><a href.*?>(.+?)</a>)|(<div\s*id=”crumb”><p class=”f-l” id=”xiaodaohang”>(.+?)</p>)

匹配

<span class="info"><em style="margin-right: 10px;"><a href="http://news.cntv.cn/world_old/" target="_blank">国际新闻</a><b>

里面的国际新闻

发现,.*?,.*?就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复

举例:a.*?b匹配最短的,以a开始,以b结束的字符串。如果把它应用于aabab的话,它会匹配aab(第一到第三个字符)ab(第四到第五个字符)

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注