from urllib import request
url='http://www.qiushibaike.com/8hr/page/1'
r=request.Request(url)
'stats.*?number">(.*?)</i.*?number">(.*?)</i.*?</div>',re.S)
print('作者 '+item[0]+'\n',item[1]+'\n','喜欢数 '+item[2],'评论数 '+item[3]+'\n'*2)
#输入正则表达式模块
import re
page=1url='http://www.qiushibaike.com/8hr/page/1'
r=request.Request(url)
r.add_header('User-Agent','ABC')
#读取首页原码并命名为content
content=request.urlopen(r).read().decode('utf-8')
#用compile方法预编译,即制定匹配规则:re.compile函数有两个参数(pattern,flag=0),若flag参数为re.S,则正则表达式中的“.”也可以表示一行(默认“.”表示除行以外的任何字符。主要使用.*?和(.*?)两个组合,.*? 是一个固定的搭配,.和*代表可以匹配任意无限多个字符,加上?表示使用非贪婪模式进行匹配,也就是我们会尽可能短地做匹配,以后我们还会大量用到 .*? 的搭配。(.*?)代表一个分组,在这个正则表达式中我们匹配了五个分组,在后面的遍历item中,item[0]就代表第一个(.*?)所指代的内容,item[1]就代表第二个(.*?)所指代的内容,以此类推。{此处引用http://cuiqingcai.com/990.html}
pattern=re.compile('<div class.*?author.*?title="(.*?)".*?"content">.(.*?)<!.*?'+'stats.*?number">(.*?)</i.*?number">(.*?)</i.*?</div>',re.S)
#findall函数在给定字符串中查找所有符合上述正则规则的表达式。
items=re.findall(pattern,content)
for item in items:print('作者 '+item[0]+'\n',item[1]+'\n','喜欢数 '+item[2],'评论数 '+item[3]+'\n'*2)