Python爬虫(一)-正则表达式基础

Python爬虫入门目录

这块内容并没有详细的正则表达式内容,作者知识储备不足是其一,项目中用不上是其二。
2022/1/24:更新为 Markdown 格式。

基本示例

import re                                #引入re正则表达式库
matching_rule = re.compile("asd")        #定义正则表达式规则
search_result = matching_rule.findall("asd, asdasd, and asdasdasd in a string waiting for searching")    #利用规则搜索字符串
print(search_result)                     #输出结果

输出结果:['asd', 'asd', 'asd', 'asd', 'asd', 'asd']

匹配规则

函数:
规则变量名 = re.compile(规则内容)

正则表达式规则参考:十四个常用正则表达式

规则内容举例

a = re.compile("a")        # 匹配所有a字符
b = re.compile("a+")       # 匹配所有a, aa, aaa, aaaa...字符串
c = re.compile("asd*")     # 匹配所有as, asd, asdd, asddd...字符串
d = re.compile("(asd)+")   # 匹配所有asd, asdasd, asdasdasd...字符串
e = re.compile('"')        # 匹配双引号
f = re.compile('(.*)')     # 匹配所有双引号中的字符串,如字符串asd,则匹配asd

以规则 f 为基础搜索,假设要搜索超链接的连接,通过html的语法可以知道,超链接是使用
<a href = "http://mwhls.top">首页<a/>
的格式写的,其中,超链接的内容位于 href = "这里"
那么,匹配规则为
rule = re.compile(\'href = "(.*)\"')
这里要注意,规则外是用单引号 \’ ,这是因为要匹配的文字中含有双引号"
通过这个规则,匹配结果是
http://mwhls.top

此外,为了防止转义字符的影响,一般使用 r"" ,而不是 ""
print(r"\\\\aa") 输出结果为\\aa
print("\\\\aa") 输出结果为\aa

搜索函数

函数:
规则变量名.findall(待匹配字符串)

findall匹配所有符合规则的字符

findall最终会返回一个列表,例如

web_data = <a href = "http://mwhls.top">首页<a/>
rule = re.compile('href = "(.*)"')
result = rule.findall(web_data)
print(result)

会返回一个只有一个元素的列表
[\'http://mwhls.top\']

You may also like...

发表评论

您的电子邮箱地址不会被公开。

35 + = 44