100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Python爬虫之(七)数据提取-正则表达式

Python爬虫之(七)数据提取-正则表达式

时间:2024-03-28 08:15:00

相关推荐

Python爬虫之(七)数据提取-正则表达式

提取数据

在前面我们已经搞定了怎样获取页面的内容,不过还差一步,这么多杂乱的代码夹杂文字我们怎样把它提取出来整理呢?下面就开始介绍一个十分强大的工具,正则表达式!

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

正则表达式是用来匹配字符串非常强大的工具,在其他编程语言中同样有正则表达式的概念,Python同样不例外,利用了正则表达式,我们想要从返回的页面内容提取出我们想要的内容就易如反掌了

规则

正则表达式相关注解

数量词的贪婪模式与非贪婪模式

正则表达式通常用于在文本中查找匹配的字符串 Python里数量词默认是贪婪的(在少数语言里也可能是默认非贪婪),总是尝试匹配尽可能多的字符;非贪婪的则相反,总是尝试匹配尽可能少的字符

例如:正则表达式”ab*”如果用于查找”abbbc”,将找到”abbb”。而如果使用非贪婪的数量词”ab*?”,将找到”a”

常用方法

re.match

re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none函数语法: re.match(pattern, string, flags=0)

re.search

re.search 扫描整个字符串并返回第一个成功的匹配函数语法: re.search(pattern, string, flags=0)

re.sub

re.sub 替换字符串 re.sub(pattern,replace,string)

re.findall

re.findall 查找全部 re.findall(pattern,string,flags=0)

正则表达式修饰符 - 可选标志

正则表达式可以包含一些可选标志修饰符来控制匹配的模式。修饰符被指定为一个可选的标志。多个标志可以通过按位 OR(|) 它们来指定。如 re.I | re.M 被设置成 I 和 M 标志:

爬取糗事百科案例

import requestsimport renum = int(input("请输入要下载多少页:"))base_url = "/text/page/{}/"for i in range(1, num + 1):new_url = base_url.format(i)headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36"}resp = requests.get(new_url, headers=headers)resp.encoding = "utf-8"infos = re.findall(r'<div class="content">\s<span>\s+(.+)', resp.text)for info in infos:with open("qiubai.txt", "a", encoding="utf-8") as f:f.write("\n" + info + "\n")

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。