py爬虫
程序员文章站
2022-05-14 18:16:13
...
from urllib import request
import re
urlopen = request.urlopen('https://docs.oracle.com/javase/8/docs/api/index.html')
data = urlopen.read()
html = data.decode('utf-8')
# 零宽断言一共分为正向和反向两类,每类又分为预测先行和回顾后发两种:
# §零宽度正预测先行断言,简称正向先行断言,语法是(?=exp),它断言此位置的后面能匹配表达式exp。
# §零宽度正回顾后发断言,简称正向后发断言,语法是(?<=exp),它断言此位置的前面能匹配表达式exp。
# §零宽度负预测先行断言,简称反向先行断言,语法是(?!exp),它断言此位置的后面不能匹配表达式exp。
# §零宽度负回顾后发断言,简称反向后发断言,语法是(?<!exp),它断言此位置的前面不能匹配表达式exp。
# ret = re.search('(?<=<p>).*(?=</p>)', html)
# if ret:
# print(ret.group())
# else:
# print('null')
# with open('test.html', 'w') as f:
# f.write(data.decode('utf-8'))
# 后边多一个?表示懒惰模式。
# .表示除\n之外的任意字符
# *表示匹配0-无穷
# +表示匹配1-无穷
# 表达式 .* 的意思很好理解,就是单个字符匹配任意次,即贪婪匹配。
# 表达式 .*? 是满足条件的情况只匹配一次,即懒惰匹配
fd = re.findall('<script src=".*">.*</script>', html, re.M)
for x in fd:
print(x)
print('\n')
fd = re.search('<script src=".*">.*</script>', html, re.M)
print(fd.group())
上一篇: 关于js获取前几周,几个月的js小脚本