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\']
共有 0 条评论