本爬虫最初始原地址:http://blog.csdn.net/pleasecallmewhy/article/details/8932310

基于的上一个改进版:第二个http://blog.csdn.net/u011350541/article/details/52264073

改动:

优化了显示,去掉<span></br>等标签;

输入一次enter加载一页而不是不停加载

# -*- coding: utf-8 -*-    import urllib2
import urllib
import re
import thread
import time
import json#----------- 加载处理糗事百科 -----------
class Spider_Model:    #声明self:含有page pages enabled def __init__(self):    self.page = 1    self.pages = []    self.enable = False    # 将所有的段子都扣出来,添加到列表中并且返回列表    def GetPage(self,page):    myUrl = "http://m.qiushibaike.com/hot/page/" + page    user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'   headers = { 'User-Agent' : user_agent }   req = urllib2.Request(myUrl, headers = headers)   myResponse = urllib2.urlopen(req)  myPage = myResponse.read()# print myPageunicodePage = myPage.decode("utf-8")# 找出所有class="content"的div标记    #re.S是任意匹配模式,也就是.可以匹配换行符myItems = re.findall('<div.*?class="content">\n\n+<span>(.*?)</span>\n\n+</div>',unicodePage,re.S)items = []# print myItems# print str(myItems).decode('string_escape')# print json.dumps(myItems, encoding="UTF-8", ensure_ascii=False)# for item in myItems:#     # item 中第一个是div的标题,也就是时间#     # item 中第二个是div的内容,也就是内容#     items.append([item[0].replace("\n",""),item[1].replace("\n","")])# print myItems# print str(myItems).decode('string_escape')# print str(myItems).encode("UTF-8")# print myItems[0]return myItems# 用于加载新的段子    def LoadPage(self):    # 如果用户未输入quit则一直运行    while self.enable:    # 如果pages数组中的内容小于2个# print len(self.pages)if len(self.pages) < 2:try:    # 获取新的页面中的段子们    myPage = self.GetPage(str(self.page))self.page += 1    self.pages.append(myPage)except:    print '无法链接糗事百科!'    else:    time.sleep(5)              # def ShowPage(self,nowPage,page):#     print u'第%d页' % page,json.dumps(nowPage, encoding="UTF-8", ensure_ascii=False)def ShowPage(self,nowPage,page):i = 0# print len(nowPage)for i in range(0,len(nowPage)):if i < len(nowPage):oneStory="\n\n"+nowPage[i].replace("\n\n","").replace("<br/>","\n")+"\n\n"print u'第%d页,第%d个故事' %(page,i) ,oneStoryi += 1else:breakmyInput = str(raw_input(u'回车键看下一页,按quit退出:\n'))
if myInput == "quit":
self.enable = Falsedef Start(self):    self.enable = True    page = self.pageprint u'正在加载中请稍候......'# 新建一个线程在后台加载段子并存储    thread.start_new_thread(self.LoadPage,())#----------- 加载处理糗事百科 -----------    while self.enable:    # 如果self的page数组中存有元素    if self.pages:    nowPage = self.pages[0]del self.pages[0]self.ShowPage(nowPage,page)    page += 1    #----------- 程序的入口处 -----------
print u"""
---------------------------------------  程序:糗百爬虫  版本:0.3  作者:why  日期:2014-06-03改进1:周二也被占用改进2:allenwithallen  20160931语言:Python 2.7  操作:输入quit退出阅读糗事百科  功能:按下回车依次浏览今日的糗百热点
---------------------------------------
"""  print u'请按下回车浏览今日的糗百内容:'
raw_input(' ')
myModel = Spider_Model()
myModel.Start()

继续改进版臭事百科爬虫20160921相关推荐

  1. python实现数据爬取——糗事百科爬虫项目

    python实现数据爬取--糗事百科爬虫项目 # urllib.request 请求模块 import urllib.request # re 模块使 Python 语言拥有全部的正则表达式功能. i ...

  2. Scrapy糗事百科爬虫实战代码分析

    Scrapy糗事百科爬虫实战代码分析 视频教学网址:[python爬虫_从入门到精通(高级篇)]scrapy框架.反爬.分布式爬虫 一.Scrapy糗事百科之爬取单页数据并保存 具体的创建方法可以参照 ...

  3. 糗事百科爬虫用户统计

    糗事百科爬虫用户统计 以前爬了糗事百科,一些数据还是挺有意思的: 工作 搬砖汉应该是调侃自己的,不过人数比较多的手艺汪,学生汪,家里蹲应该有一些共同点,那就是时间比较自由 故乡 基本上人口基数大的地方 ...

  4. Python爬虫 基于Beautiful Soup的糗事百科爬虫

    python爬虫 ---- 糗事百科爬虫 首先进入糗事百科官网首页 -> 糗事百科 本次爬虫的目标是翻页爬取糗事百科的信息,包括 标题, 链接, 作者名, 好笑数&评论数 之后右键检查, ...

  5. [python3]糗事百科爬虫

    最近开始学习爬虫和机器学习,网上好多资料都是python2的,学习爬虫可见汪海大哥的专题[python爬虫入门教程] 这里将第八讲[糗事百科的网络爬虫(v0.3)源码及解析(简化更新) ]中的源码修正 ...

  6. Python爬虫--抓取糗事百科段子

    今天使用python爬虫实现了自动抓取糗事百科的段子,因为糗事百科不需要登录,抓取比较简单.程序每按一次回车输出一条段子,代码参考了 http://cuiqingcai.com/990.html 但该 ...

  7. Python爬虫实战(1):爬取糗事百科段子

    Python爬虫入门(1):综述 Python爬虫入门(2):爬虫基础了解 Python爬虫入门(3):Urllib库的基本使用 Python爬虫入门(4):Urllib库的高级用法 Python爬虫 ...

  8. python爬虫之糗事百科

    历经1个星期的实践,终于把python爬虫的第一个实践项目完成了,此时此刻,心里有的只能用兴奋来形容,后续将继续加工,把这个做成一个小文件,发给同学,能够在cmd中运行的文件.简化版程序,即单单爬取页 ...

  9. 转 Python爬虫实战一之爬取糗事百科段子

    静觅 » Python爬虫实战一之爬取糗事百科段子 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致 ...

最新文章

  1. 向上转型--Upcasting
  2. 在持续交付中加入自动化验收测试支持
  3. RabbitMQ(一)helloworld
  4. Qt中 Qstring 与QbyteArray的互相转换
  5. 使用Hadoop自带的例子wordcount实现词频统计
  6. ViewData 和TempData ,Session用法
  7. java如何同时画多个图形_如何绘制两个不同系列的箱线图?
  8. python_图像去畸变/图像矫正
  9. PyCharm入门使用教程-最强版本
  10. vivo手机刷鸿蒙教程,vivo手机怎么刷机_vivo手机刷机全教程
  11. 解决 Intel Extreme Tuning Utility(XtuService)的日志占用过大(直接删Logs或卸载)
  12. 石墨烯 量子计算机,《Nature Nanotech.》又是石墨烯,这次对量子计算机下手了!...
  13. STM32F407ZET6音乐播放器
  14. 强大的Tale博客系统v2.0.2源码 支持多主题
  15. manjaro gnome配置白天夜晚自动切换对应主题
  16. 静态分析—扇入、扇出、圈复杂度
  17. win10u盘被写保护怎么解除_win10系统所有usb都被写保护怎么取消_win10系统usb被写保护怎么办...
  18. 我的电脑ip攻击邮件服务器,如何避免邮件服务器IP被列入黑名单
  19. Python 使用SMTP协议发送邮件
  20. IOS安卓友盟消息推送详细配置以及证书更新

热门文章

  1. 【CVPR智慧城市挑战赛】无监督交通异常检测,冠军团队技术分享
  2. 创建学生、课程、老师、学生成绩表
  3. hana服务器销售资质,hana认证服务器
  4. leetcode算法(2)
  5. HTML之 <p></p>标签 笔记
  6. 淘淘商城第86讲——实现商品详情页面静态化方案时,你没遇到过java.lang.IllegalArgumentException或者java.lang.NullPointerException这种异常
  7. 小米笔记本air13-3安装Deepin
  8. 【curl: (52) Empty reply from server】
  9. 我的世界服务器修改速度,我的世界速度提升指令是什么_我的世界速度提升指令介绍_玩游戏网...
  10. 【图像融合】基于非下采样剪切波变换(NSST)实现红外图像和可见光图像融合matlab代码