正则表达式re模块使用
使用方法1:r_list=re.findall(‘正则表达式’,html,re.S) 使用方法2:pattern=re.compile(‘正则表达式’,re.S) r_list=pattern.findall(html) 注意: 1、使用findall()方法得到的结果一定为列表 2、re.S作用为使得正则表达式元字符可匹配到‘\n’在内的所有字符
正则表达式中爬虫常用的元字符 . 任意一个字符(不包括换行) \d 一个数字 \s 空白字符 \S 非空白字符 [] 包含[]内容 * 出现0次或多次 + 出现1次或多次 \w 普通字符
import re
pattern=re.compile('[\s\S]')
result=pattern.findall('fdrfv\n')
print(result)
import re
pattern=re.compile('.',re.S)
result=pattern.findall('fdrfv\n')
print(result)
例子:
假设我们有一段html代码,但是我们只需要里面文字的部分,不要标签,那么我们就需要使用正则表达式分组 注意:在正则表达式中分贪婪匹配和非贪婪匹配 贪婪匹配:例如两行文字,会组成一个列表元素[‘p1p2’] 书写格式:一般书写模式 非贪婪匹配:两行元素就分为两个列表元素[‘p1’,‘p2’] 书写格式:需要比贪婪匹配末尾多一个?
正则表达式分组则只需在需要的提取的部分加上()即可
import re
html=""" <div><p>p1</p></div>
<div><p>p2</p></div>
"""
pattern1=re.compile('<div><p>(.*)</p></div>',re.S)
r_list1=pattern1.findall(html)
print(r_list1)
pattern2=re.compile('<div><p>(.*?)</p></div>',re.S)
r_list2=pattern2.findall(html)
print(r_list2)
|