python自学笔记——糗事百科段子爬取

# -*- 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)

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171222G0JE4Z00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券