标签:dex back 准备 html 下标 文档 reg 内容 问题
上一篇博客Python从零开始写爬虫-1 使用Python发送http请求并获得网页源代码中我们已经学习到如何从网站上获取html的源码, 那么今天我们就来学习如何使用正则表达式来解析HTML.同样以Python的Api文档为例.
又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。(从百度上复制过来的)
看这篇文章没有正则表达式的基础也可以看, 当然有最好, 下面我会介绍如何在Python中使用正则表达式,
python中的正则表达式, 通过 re 进行实现, 首先导入模块 re.
import re
其具体用法参见参考文档. 我们在这个爬虫需要用大他的两个方法
该方法通过返回text中符合patten的第一个结果, 这个方法,主要为后面获取小说的正文做准备.下面我以获取text中<div>...</div>的内容,为例, 讲解这个命令.
r = re.search(‘<div>.*?</div>‘, ‘<a href=’www.baidu.com>百度首页</a><div>我正在学习正则表达式</div>‘)
re.search()的结果会保存在r.group中
print(r.group())
可以看到以下结果:
我们已经正确的获得div里的内容, 但是有一个问题为什么连便签内容也获得了, 有什么办法可以捕获的标签吗?
整个表达式中一般使用()来划分group, 我们子需要将需要获得内容用括号括起来, 然后更具下标获取就可以了.
r = re.search(‘<div>(.*?)</div>‘, ‘<a href=’www.baidu.com>百度首页</a><div>我正在学习正则表达式</div>‘)
可以看出, group()默认是输入group(0), 而group(1)输入第一括号对应的内容, 以此类推.
如果text,没有匹配的结果, 那么就会返回 None
r = re.search(‘<div>(.*?)</div>没有结果‘, ‘<a href=’www.baidu.com>百度首页</a><div>我正在学习正则表达式</div>‘)
该命令主要是为了后面获取小说章节的链接以及标题做准备.假设 :
text = ‘<a href="www.baidu.com">百度首页</a><div>我正在学习正则表达式</div><a href="www.youku.com">优酷首页</a>‘
我们现在需要获取text中所有链接的目标地址以及其包含的文本. 我们可以通过:
r = re.findall(‘<a href="(.*?)">(.*?)</a>‘, text)
for i in r: print(i[0], i[1])
就可以后的以下结果:
到这里, 该爬虫可能会用到的两个正则表达式命令已经学完了.在下一章, 我们将学习如何获得需要下载的目录
标签:dex back 准备 html 下标 文档 reg 内容 问题
原文地址:https://www.cnblogs.com/blogcyh/p/12271429.html