爬取一个网站:
import urllib.request
res=urllib.request.urlopen('https://www.csdn.net/')
print(res.read())
爬虫正则表达式:
1.提取连续的四个数字 /d/d/d/d
import re
m=re.findall('\d\d\d\d','123adfa56sne6742')
print(m)
结果:[‘6742’]
2.已知提取的头部和尾部,提取中间部分,就是加括号(.*)
m=re.findall(r'<div>(.*)</div>','<div>hello</div>')
结果:[‘hello’]
3.有多个<>时,用上述方法只能识别第一个和最后一个,结果如下图:
m=re.findall(r'<div>(.*)</div>','<div>hello</div><div>world</div>')
这种情况下,括号()中间要加?
m=re.findall(r'<div>(.*?)</div>','<div>hello</div><div>world</div>')
结果就是[‘hello’, ‘world’]
4.匹配除了换行符之外的字符
m=re.findall('.','sd\nefwe')
结果: [‘s’, ‘d’, ‘e’, ‘f’, ‘w’, ‘e’]
5.匹配[ ]中括号中任意一个字符都可以
m=re.findall('a[bcd]e','jabesadebacesse')
结果:[‘abe’, ‘ade’, ‘ace’]
6.提取数学是\d,非数字的字符是\D
7.提取空格\s,非空格的字符是\S
m=re.findall('\s',' vssf\t s')
结果:[’ ', ‘\t’, ’ ']
8.提取字母和数字\w,非字母和数字\W
m=re.findall('\w','1d*31&%4')
结果:[‘1’, ‘d’, ‘3’, ‘1’, ‘4’]
9.提取字符串 abs
m=re.findall('abs','absdgregabssff')
结果:[‘abs’, ‘abs’]
若只提取开头,在匹配的字符前加 ^
m=re.findall('^abs','absdgregabssff')
结果:[‘abs’]
10.匹配不区分别大小写,加re.I
m=re.findall('abc','abcABCdf',re.I)
结果:[‘abc’, ‘ABC’]
11.匹配0个或1个(后面跟0个或1个某字符)
m=re.findall('ab?','abbbabbba')
结果:[‘ab’, ‘ab’, ‘a’]
12.匹配至少1个
m=re.findall('ab+','abbbabbba')
结果:[‘abbb’, ‘abbb’]
13.匹配至少0个
m=re.findall('ab*','abbbabbba')
结果:[‘abbb’, ‘abbb’, ‘a’]
14.匹配com结尾的邮箱
m=re.findall('\w+@\w+\.com','1115981109@qq.com;1115981109@qq.org')
结果:[‘1115981109@qq.com’]