# -*- coding: utf-8 -*-
"""
Created on Thu Dec 21 14:27:16 2017
@author: Andrew
"""
########################爬取内容包括:用户、段子内容、段子对应的好笑数
import urllib.request
import re
def getcontent(url,page):
#模拟成浏览器
headers=("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36")
opener.addheaders = [headers]
#将opener安装为全局
#构建对应用户提取的正则表达式
userpat='(.*?)'
#构建段子内容提取的正则表达式
contentpat='
(.*?)
'
#构建觉得段子好笑的数量
haoxiaopat='(\d*)\s*好笑'
#寻找出所有的用户,有换行符就用re.S:修改模式
userlist=re.compile(userpat,re.S).findall(data)
#寻找出所有的内容
contentlist=re.compile(contentpat,re.S).findall(data)
#村找出所有的觉得好笑的数量
haoxiaolist=re.compile(haoxiaopat,re.S).findall(data)
x=1
for content in contentlist:
content=content.replace("\n","")
#用字符串作为变量名,先将对应字符串赋给一个变量
name="content"+str(x)
#通过exec()函数实现用字符串作为变量名并赋值
exec(name+'=content')
x+=1
y=1
z=0
for user in userlist:
#筛选出好笑数大于200的段子
if int(haoxiaolist[z])>200:
print("好笑:"+str(haoxiaolist[z]))
name="content"+str(y)
print(" 用户 "+str(page)+str(y)+" 是:"+user)
print("内容是:")
exec("print("+name+")")
print("\n")
y=y+1
z=z+1
else:
z=z+1
#分别获取各页的段子,通过for循环可以获取多页
for i in range(1,2):
url="http://www.qiushibaike.com/8hr/page/"+str(i)
getcontent(url,i)
领取专属 10元无门槛券
私享最新 技术干货