糗百Python爬虫1.1

来源:互联网 发布:java中的方法调用传参 编辑:程序博客网 时间:2024/05/16 17:56

页面内容在不断变化,如此程序不能正常运行,请自行修改正则表达式进行正确匹配!

# -*- coding:utf-8 -*-#--------------------------------------------------#   程序:糗事百科爬虫#   版本:1.1#   作者:执剑天涯#   日期:2016-08-12#   版本:Python 2.7.7#   操作:点击回车键,点击q键#   功能:输出一个糗百段子作者,内容,点赞数,q退出程序#--------------------------------------------------import urllibimport urllib2import repage = 1  #中间变量,糗百页数num = 1  #中间变量,每一页段子个数def getPageItems(page):    url = 'http://www.qiushibaike.com/hot/page/' + str(page)  #资源定位    user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'    headers = { 'User-Agent' : user_agent }      try:        request = urllib2.Request(url,headers = headers)        response = urllib2.urlopen(request)#       print response.read()    except urllib2.URLError, e:        if hasattr(e,"code"):            print e.code        if hasattr(e,"reason"):            print e.reason    content = response.read().decode('utf-8')    pattern = re.compile('\<h2\>(.*?)\<\/h2\>.*?class\=\"content\"\>(.*?)\<\/div\>.*?img\ssrc\=\"(.*?)\".*?stats\-vote\"\>.*?\>(.*?)\<',re.S)  #正则表达式,匹配出文字段子内容    items = re.findall(pattern,content)  #匹配出段子来    return itemswhile True:    items = getPageItems(page)    print u'第%d页\t本页段子数量:%d' %(page,len(items))           for item in items:        print u'正在读取糗百,按回车查看新段子,按Q退出...'        input = raw_input()          if input == 'q':  #若输入q,则停止程序            quit(0)        haveImg = re.search('img',item[2])        if not haveImg:  #找出不含图片的段子            replaceBR = re.compile('<br/>')  #html换行符            content = re.sub(replaceBR,'\n',item[1])  #替换换行符号            print u'本页第%s个段子\t作者:%s\n内容:%s\n点赞:%s' %(num,item[0],content,item[3])  #打印段子            num += 1  #段子个数加1    num = 1  #段子个数初始化    page += 1  #页码加1


0 0
原创粉丝点击