python抓取糗事百科的段子


最近在学习python,在网上看到一个抓取糗百的段子的脚本。

思路简单清晰。 看了后自己学着写了一下代码,作为一个初学者,基本功不是很扎实。动手能力较差,写的时候收获也蛮多。简单好用易于学习。

#coding=utf-8
import urllib2
import re

class Qsbk:
    def __init__(self):
        self.pageIndex=1;
        self.enable=False
        self.user_agent='Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
        self.headers={ 'User-Agent' : self.user_agent }
        
        self.stories=[]
        
    def getPage(self,pageIndex):
        try:
            url="http://www.qiushibaike.com/hot/page/"+str(pageIndex)
            request=urllib2.Request(url,headers=self.headers)
            response=urllib2.urlopen(request)
            
            page=response.read().decode('utf-8')
            
            return page
        except urllib2.URLError,e:
            if hasattr(e, 'reason'):
                print "读取糗事百科失败,失败原因为"+e.reason
                return None
        
    def getPageItems(self,pageIndex):
        page=self.getPage(self.pageIndex)
        if not page:
            print u'读取页面为空,出错'
            return 
        pattern = re.compile('<div.*?class="author.*?>.*?<a.*?</a>.*?<a.*?>(.*?)</a>.*?<div.*?class'+
                         '="content".*?title="(.*?)">(.*?)</div>(.*?)<div class="stats.*?class="number">(.*?)</i>',re.S)
        items = re.findall(pattern,page)
        
        pageStories=[]
        
        for item in items:
            haveImg=re.search("img",item[3])
            if not haveImg:
                pageStories.append([item[0].strip(),item[1].strip(),item[2].strip(),item[4].strip()])
        
        return pageStories
    
    def loadpage(self):#读取新的一页 并把新一页的内容添加到stroies中
        if self.enable==True:
            if len(self.stories)<2:
                pageStories=self.getPageItems(self.pageIndex)
                
                if pageStories:
                    self.stories.append(pageStories)
                self.pageIndex+=1
            
    
        
    def start(self):
        self.enable=True
        print u"正在读取糗事百科,按回车查看新段子,q退出"
        nowpage=0
        self.loadpage()       #load 
        while self.enable:
            if len(self.stories)>0:
                pageStories=self.stories[0]
                nowpage+=1
                del self.stories[0]
                
                for story in pageStories:
                    input=raw_input('>')
                    self.loadpage()
                    if input=='q':
                        self.enable=False
                        print '您已退出糗百抓抓抓程序,祝您天天开心'
                        return
                    print u"第%d页\t发布人:%s\t发布时间:%s\n%s\n赞:%s\n" %(nowpage,story[0],story[1],story[2],story[3])
        
        
    



if __name__ == '__main__':
    spider=Qsbk()
    spider.start()

附参考地址:http://cuiqingcai.com/990.html

附python2.7.9下载地址:

 https://www.python.org/ftp/python/2.7.9/python-2.7.9.msi
















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值