Python - 静态页面抓取(抓取‘糗事百科’段子)
发布日期:2021-06-30 19:50:26 浏览次数:2 分类:技术文章

本文共 3059 字,大约阅读时间需要 10 分钟。

问题导读:

抓取糗事百科段子,作者、作者性别、段子内容、筛选无图段子

解决方案:

#!/usr/bin/env python# coding=utf-8import urllib2import re# 爬虫class qsbk_spider:    #初始化    def __init__(self):        self.pageIndex = 1        self.headers = { 'User-Agent':'Mozilla/5.0 (X11; Linux x86_64; rv:49.0) Gecko/20100101 Firefox/49.0' }        # 段子        self.stories = []        # 程序运行标量        self.enable = False    # 通过索引获得页面html    def getPageByIndex(self, pageIndex):        try:            url = 'http://www.qiushibaike.com/hot/page/' + str(pageIndex)            # 构建Request 请求            request = urllib2.Request(url,headers = self.headers)            # 得到html            response = urllib2.urlopen(request)            # 转码            page_html = response.read().decode('utf-8')            return page_html        except urllib2.URLError, e:            if hasattr(e,'reason'):                print u'连接失败,错误:',e.reason                return None    # 通过html页面,返回不带img的段子列表    def getPageExceptImg(self, pageIndex):        page_html = self.getPageByIndex(pageIndex)        if not page_html:            print '页面加载失败!'            return None        pattern = re.compile(r'

(.*?)

.*?(.*?).*?', re.S) items = re.findall(pattern,page_html) # 保存页面的列表 page_storie = [] # 遍历匹配到item for item in items: # 没有img if not re.search('img',item[3]): if re.search('manIcon',item[1]): a_sex = '(男孩)' else: a_sex = '(女孩)' # 替换
标签 ''' compile: 把正则表达式的模式和标识转化成正则表达式对象,供函数使用。 ''' replaceBR = re.compile('
') text = re.sub(replaceBR,'\n',item[2]) # a_sex 是作者性别,将它存入列表时要解码 page_storie.append([item[0].strip(),a_sex.decode('utf-8'),text.strip()]) return page_storie # 输入页数,得到每一页的段子 def getStories(self): start = input('开始页:') end = input('结束页:') while(start <= end): print start, self.stories.append(self.getPageExceptImg(self.pageIndex)) start += 1 # 写入 ./qb_file.txt def writeToFile(self): print '保存中---', qb_file = open('./qb_file.txt','w') for story in self.stories: for s in story: qb_file.write('作者:' + s[0].encode("utf-8") + s[1].encode("utf-8") + '\n' + '段子:' + s[2].encode("utf-8") + '\n') qb_file.close() print '已保存!' # 开始 def start(self): self.getStories() self.writeToFile()#开始 if __name__ == "__main__": spider = qsbk_spider() spider.start()

作者:逆风的单车(男孩)段子:前段时间,主管找到我,偷偷对我说“小x你工作表现的不错,工资准备给你涨三百,这事你千万不能告诉别人”我感激涕零,直到聚餐的时候,主管喝多了,拉着我的手“小x,我对不住你,其实别人都涨了六百,怕你想不开,就没和你说实话!”卧槽!!!作者:告诉静静说我想她(男孩)段子:买了一个小蛋糕(真的很小),上面有一朵花,花边一颗草。那草做的那个精致啊,真像真的。吃下去,我草,是真的!作者:海贼--王路飞(男孩)段子:一同事单身,周末洗了一堆衣服,发朋友圈说累死了,真得找个媳妇!数位已婚男同胞回复:洗的少了不过瘾?作者:爱上你却输了骄傲(女孩)段子:LZ是朋友圈里有名的红娘,介绍了三对,都成功了,之后好多人纷纷都找我介绍。自从去年那三对都离婚了之后,整个世界就安静了……并送我一个外号“婚姻中转站站长”作者:专业^O^丰胸(男孩)段子:二货的朋友伤不起。在广场上打赌,一朋友输了,罚他和大妈们跳广场舞。各种不愿意,扭捏之后就去跳了。然后跳的嗨了,拉都拉不走!!服了~

转载地址:https://lipenglin.blog.csdn.net/article/details/52818528 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Jquery - jquery 使用小结
下一篇:Linux - 常用命令(长期更新)

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月26日 08时58分22秒