首页 > 代码库 > 糗事百科的段子
糗事百科的段子
#! usr/bin/env python
# -*- coding: utf-8 -*-
‘‘‘
1.抓取糗事百科热门段子
2.过滤带有图片的段子
3.实现每按一次回车显示一个段子的发布时间,发布人,段子内容,点赞数。
‘‘‘
import urllib2
import re
class QSBK(object):
def __init__(self):
self.pageIndex = 1
self.user_agent = ‘Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)‘
# 初始化headers
self.headers = {‘User-Agent‘:self.user_agent}
# 存放段子容器
self.stories = []
# 程序控制器
self.enable = True
# 传入某一索引页 获取代码
def getPage(self, pageIndex):
url = ‘http://www.qiushibaike.com/hot/page/‘ + str(pageIndex)
request = urllib2.Request(url, headers=self.headers)
try:
response = urllib2.urlopen(request)
pageCode = response.read().decode(‘utf-8‘)
return pageCode
except urllib2.URLError,e:
if hasattr(e,‘reason‘):
print u‘连接糗事百科错误‘,e.reason
return None
# 获取某一页不带图片的段子列表
def getPageItems(self, pageIndex):
pageCode = self.getPage(pageIndex)
pageStories = []
if not pageCode:
print ‘页面加载失败‘
return None
pattern = re.compile(‘<h2>(.+?)</h2>.*?<span>(.*?)</span>.*?<i .*?>(.*?)</i>.*?<i .*?>(.*?)</i>‘ ,re.S)
items = re.findall(pattern, pageCode)
for item in items:
pageStories.append([item[0].strip(),item[1].strip(),item[2].strip(),item[3].strip()])
return pageStories
# 加载并提取页面的内容,加入到列表中
def loadPage(self):
if self.enable == True:
if len(self.stories) < 2:
pageStroies = self.getPageItems(self.pageIndex)
if pageStroies:
self.stories.append(pageStroies)
self.pageIndex += 1
# 调用该方法,每次敲回车打印输出一个段子
def getOneStory(self,pageStories,page):
# 遍历一页的段子
for story in pageStories:
# 等待用户输入
input = raw_input()
# 每当输入回车一次,判断一下是否要加载新页面
self.loadPage()
# 如果输入Q则程序结束
if input == "Q":
self.enable = False
return
print ‘发帖人:‘,story[0]
print ‘内容:‘,story[1]
print ‘共%s人觉得很赞‘%int(story[2])
print ‘%s人进行了点评‘%int(story[3])
print ‘当前为糗事百科主页第%s页‘%page
# 开始方法
def start(self):
print u"正在读取糗事百科,按回车查看新段子,Q退出"
# 使变量为True,程序可以正常运行
self.enable = True
# 先加载一页内容
self.loadPage()
# 局部变量,控制当前读到了第几页
nowPage = 0
while self.enable:
if len(self.stories)>0:
# 从全局list中获取一页的段子
pageStories = self.stories[0]
# 当前读到的页数加一
nowPage += 1
# 将全局list中第一个元素删除,因为已经取出
del self.stories[0]
# 输出该页的段子
self.getOneStory(pageStories,nowPage)
spider = QSBK()
spider.start()
糗事百科的段子
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。