python爬虫-糗百阅读器

#!/usr/bi/env python
# -*- coding:utf-8 -*-
import urllib
import urllib2
import re

class Turtle(object):
    def __init__(self):
        self.pageIndex = 1
        self.stories = []
        self.enable = True
        self.header = {‘User-Agent‘:‘Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)‘}
        self.enable = True

    ‘‘‘
    获取 网页内容
    ‘‘‘
    def getPage(self,pageIndex):
        try:
            url = ‘http://www.qiushibaike.com/hot/page/‘+ str(pageIndex)
            request = urllib2.Request(url, headers = self.header)
            response = urllib2.urlopen(request)
            return response.read().decode(‘utf-8‘)
        except urllib2.URLError,e:
            if hasattr(e,‘code‘):
                print u‘错误码:‘,e.code
            if hasattr(e , ‘reason‘):
                print u‘错误原因:‘,e.reason

    ‘‘‘
    获取网页内段子
    ‘‘‘
    def getPageItem(self,pageIndex):
        pageContent = self.getPage(pageIndex)
        if not  pageContent:
            print u‘页面加载失败。。。‘
            return None
        pattern = re.compile(‘<div.*?author.*?<h2>(.*?)</h2>.*?‘+
                             ‘<div.*?content">(.*?)<!--(.*?)-->.*?</div>‘+
                             ‘.*?<div.*?class="stats.*?class="number">(.*?)</i>‘,re.S)
        try:
            items = re.findall(pattern,pageContent)
        except BaseException,e:
            print e
        pageStories = []
        for item in items:
            replaceBR = re.compile(‘<br/>‘)
            text = re.sub(replaceBR,‘\n‘,item[1])
            pageStories.append([item[0].strip(),text.strip(),item[3].strip()])
        return pageStories

    ‘‘‘
    加载一页段子
    ‘‘‘
    def loadPage(self):
        if len(self.stories) < 2:#总页数小于1页,加载下一页
            print ‘==============剩余未读小于两页,预加载下一页==============‘
            pageStories = self.getPageItem(self.pageIndex)
            self.pageIndex += 1
            self.stories.append(pageStories)

    ‘‘‘
    一个个读段子
    ‘‘‘
    def getOneStory(self):
        for story in self.stories[0]:
            isQ = raw_input()
            if isQ == ‘q‘ or isQ == ‘Q‘:
                self.enable = False
                return
            self.loadPage()
            print story[1]
            print ‘-----%s,liked by %s‘ % ( story[0] , story[2] )

    def start(self):
        print ‘start to read page 1‘
        self.loadPage();
        while self.enable:
            if len(self.stories) >0:
                self.getOneStory()
                del  self.stories[0]
                print ‘===========该页已读完,读取下一页===========‘

turtle = Turtle()
turtle.start();

  

时间: 2024-11-09 07:20:32

python爬虫-糗百阅读器的相关文章

Python 爬虫 之 阅读呼叫转移(二)

上一篇博客我们成功地从网页上爬下了小说的一个章节,理所当然地,接下来我们要把整本小说都爬下来.首先,我们要把程序从原来的读完一章就结束,改成读完一章之后可以继续进行下一章的阅读. 注意到每个小说章节的网页下面都有下一页的链接.通过查看网页源代码,稍微整理一下(  不显示了),我们可以看到这一部分的 HTML 是下面这种格式的: <div id="footlink"> <script type="text/javascript" charset=&q

Python 爬虫 之 阅读呼叫转移(一)

你是否苦恼于网上无法下载的"小说在线阅读"内容?或是某些文章的内容让你很有收藏的冲动,却找不到一个下载的链接?是不是有种自己写个程序把全部搞定的冲动?是不是学了 python,想要找点东西大展拳脚,告诉别人"哥可是很牛逼的!"?那就让我们开始吧! 哈哈~ 好吧,我就是最近写 Yii 写多了,想找点东西调剂一下.... = = 本项目以研究为目的,所有版权问题我们都是站在作者的一边,以看盗版小说为目的的读者们请自行面壁! 说了这么多,我们要做的就是把小说正文的内容从网

Python 爬虫 之 阅读呼叫转移(三)

尽管上一篇博客中我们能够连续地阅读章节了,可是.难道每一次看小说都执行一下我们的 Python 程序?连记录看到哪里都不行,每次都是又一次来过?当然不能这样,改! 如今这么多小说阅读器,我们仅仅须要把我们要的小说抓取到本地的 txt 文件中就好了,然后自己选个阅读器看.怎么整都看你了. 事实上上个程序我们已经完毕了大部分逻辑,我们接下来的修改仅仅须要把抓取到每一章的时候不用显示出来,而是存入 txt 文件之中.另外一个是程序是不断地依据下一页的 Url 进行抓取的,那么什么时候结束呢?注意当到达

python阅读器代码

最近在学习python,作业是用python写一个阅读器: 要求如下: 1,有自动阅读模式 2,可以上下翻页 实战: 代码如下: 写的不是很好,如有不当之处,欢迎指正交流~

Linux版EPUB阅读器

Linux版EPUB阅读器 本文导航 -1. Calibre09% -2. FBReader23% -3. Cool Reader33% -4. Okular44% -5. pPub51% -6. epub63% -7. Sigil74% 如果说用平板电脑看书尚属主流的话,那么在电脑上读书就非常少见了.专注阅读16世纪的书是非常困难的了,没人希望后台蹦出QQ聊天窗口.但是如果你非要在电脑上打开电子书的话,那么你需要一个电子书阅读软件.大多数出版物支持使用EPUB格式的电子书(电子出版物).幸运的

python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。

本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding:utf-8from com.wenhy.crawler_baidu_baike import url_manager, html_downloader, html_parser, html_outputer print "爬虫百度百科调度入口" # 创建爬虫类class SpiderMai

python爬虫实战——5分钟做个图片自动下载器

python爬虫实战--图片自动下载器 制作爬虫的基本步骤 顺便通过这个小例子,可以掌握一些有关制作爬虫的基本的步骤. 一般来说,制作一个爬虫需要分以下几个步骤: 分析需求(对,需求分析非常重要,不要告诉我你老师没教你) 分析网页源代码,配合F12(没有F12那么乱的网页源代码,你想看死我?) 编写正则表达式或者XPath表达式(就是前面说的那个神器) 正式编写python爬虫代码 效果 运行: 恩,让我输入关键词,让我想想,输入什么好呢?好像有点暴露爱好了. 回车 好像开始下载了!好赞!,我看

【图文详解】python爬虫实战——5分钟做个图片自动下载器

python爬虫实战--图片自动下载器 之前介绍了那么多基本知识[Python爬虫]入门知识,大家也估计手痒了.想要实际做个小东西来看看,毕竟: talk is cheap show me the code! 制作爬虫的基本步骤 顺便通过这个小例子,可以掌握一些有关制作爬虫的基本的步骤. 一般来说,制作一个爬虫需要分以下几个步骤: 1. 分析需求(对,需求分析非常重要,不要告诉我你老师没教你) 2. 分析网页源代码,配合F12(没有F12那么乱的网页源代码,你想看死我?) 3. 编写正则表达式或

python 爬虫(转,我使用的python3)

原文地址:http://blog.csdn.net/pi9nc/article/details/9734437 [Python]网络爬虫(一):抓取网页的含义和URL基本构成 分类: 爬虫 Python2013-05-13 22:30 1597人阅读 评论(0) 收藏 举报 一.网络爬虫的定义 网络爬虫,即Web Spider,是一个很形象的名字.把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛.网络蜘蛛是通过网页的链接地址来寻找网页的. 从网站某一个页面(通常是首页)开始,读