zoukankan      html  css  js  c++  java
  • 爬取哈哈笑话

    一、爬取哈哈笑话

    目标:
    • 实现文档爬取
    • 实现词云
    • 实现词频分析
    import re
    import requests
    import wordcloud
    from imageio import imread
    import jieba
    
    """
    @author RansySun
    @create 2019-07-22-15:07
    """
    
    
    def haha_reptile():
        """爬取哈哈笑话,获取文档"""
        data_res = ""
        for i in range(1, 16):
            # http://www.haha56.net/main/lx_joke/list_2_1.html
            response = requests.get(f'http://www.haha56.net/main/lx_joke/list_2_{i}.html')
            response.encoding = 'gb2312'
    
            data = response.text
    
            data_title = re.findall('<dt><a href=".*?" target="_blank">(.*?)</a></dt>', data)
            """
            <dd class="preview">一打开朋友圈 一打开朋友圈, 就像误入了高帅富、白富美的私人会所, 满目是天天念经的商务精英, 顿悟人生的上流人士。 瞬间觉得不配跟人家做朋友。 喜欢你的人一定很少吧 喜欢你的人一定很少吧? 才不是呢 很多? 是根本没有。 你丫看...</dd>
            """
            data_content = re.findall('<dd class="preview">(.*?)</dd>', data)
            title_content_dic = {}
            title = ""
            content = ""
            for j in range(len(data_title)):
                title += data_title[j]
                content += data_content[j]
            data_res = data_res + title + content
        return data_res
    
    
    def haha_wordcloud():
        """生成词云"""
        data = haha_reptile()
        mask = imread(r"E:python实训python预科班day07	estciyun.png")
        w = wordcloud.WordCloud(font_path=r"C:WindowsFontsSTFANGSO.TTF", background_color="white", mask=mask)
    
        w.generate(data)
        w.to_file("哈哈笑话词云.png")
        print("词云生成成功")
    
    
    def haha_jieba():
        """词频分析"""
        data_dic = {}
        data = haha_reptile()
        data_jieba = jieba.lcut(data)
        for res in data_jieba:
            if len(res) == 1 or res.startswith("."):
                continue
            if res in data_dic:
                data_dic[res] += 1
            else:
                data_dic[res] = 1
    	# 排序
        def func(i):
            return i[1]
        data_list = list(data_dic.items())
    
        data_list.sort(key=func, reverse=True)
        data_list = data_list[:10]
        for result in data_list:
    
            print(f"{result[0]: <10}|{result[1]: <8}")
    
    haha_wordcloud()
    haha_jieba()
    
    

    结果:

    词云

    词频统计

    一个 |52
    老婆 |51
    笑话 |37
    什么 |36
    老公 |35
    今天 |30
    怎么 |28
    冷笑 |24
    因为 |22
    爆笑 |21

    在当下的阶段,必将由程序员来主导,甚至比以往更甚。
  • 相关阅读:
    KM匹配模板
    BestCoder 1st Anniversary 1002-1005
    SGU 106 The equation
    sgu 104 Little shop of flowers
    SGU Magic Pairs
    关于 “'sqlite3' 不是内部或外部命令.....”问题
    通过django 速成 blog
    windows 通过appache链接cgi程序
    A Lot of Games(Trie树 + 博弈)
    树的点分治 (poj 1741, 1655(树形dp))
  • 原文地址:https://www.cnblogs.com/randysun/p/11231819.html
Copyright © 2011-2022 走看看