美文网首页
小目标——基于热门公众号文章的词频分析

小目标——基于热门公众号文章的词频分析

作者: CommandM | 来源:发表于2016-10-08 22:50 被阅读92次

    构思:首先从传送门(or Sogou微信搜索)里爬取热门公众号文章,然后通过结巴分词将全文分词,最后进入数据库进行分析词频。

    首先构建环境,略。

    然后,先做爬虫(不会scrapy即便看他文档很多回了)。

    这里贴上来两个爬取的Function。

    def pullLatestHotArticles():
        ''' 全部文章中 的 热门 '''
        url = "http://werank.cn/"
        urlList = []
        html = requests.get(url).text
        et = etree.HTML(html)
        list = et.xpath("//table/tbody/tr/td[2]/a")
        for element in list :
            urlList.append(element.attrib["href"])
        print "already get all urls"
        return urlList
    
    def pointedWechatOfficialAccountsArticles(wechatOfficialAccountName):
        ''' 指定威信公众号 文章'''
        headers = {
          'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0',
          'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
          'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
          'Accept-Encoding': 'gzip, deflate',
          'Connection': 'keep-alive',
          'Cache-Control': 'max-age=0',
        }
        urlList = []
        i = 0
        while i >= 0 :
            url = "http://chuansong.me/account/" + wechatOfficialAccountName + "?start=" + str(i)
            html = requests.get(url, headers=headers).text
            etree_html = etree.HTML(html)
            list = etree_html.xpath("//h2/span/a")
            for element in list :
                urlList.append("chuansong.me" + element.attrib["href"])
            if len(list) < 12 :
                break
            i = i + 12
        return urlList
    

    至于把文章放进MongoDB的过程,我就不贴出来了,如果文章少完全不用放进NoSQL,放文件里放关系型数据库或直接递交给分析器都可以。

    不得不说下感谢传送门的站长……好平台啊……

    然后就是用我们的分析器来取出文章,分析瓷瓶词频

    同样,我们也不说怎么取了……

    最后就是关键的瓷瓶分析


    今天是2017年10月6日……

    Totally忘了这篇还没写完……

    把最后的词频分析简单的说下吧,其实很简单。

    首先我们要认识Python的一个库,collections。collections是Python内建的一个集合模块,提供了许多有用的集合类。其中就有个简单的计数器,Counter函数,这样我们就不用自己手写计数器了。

    最后大致就是这样

    def cleanArticle(articleContent=""):
        madeup = []
        a = collections.Counter()
        paragraphs = articleContent.split("\n")
        paragraphs =  list(set(paragraphs))
        if "" in paragraphs:
            paragraphs.remove("")
        for paragraph in paragraphs:
            sentences = paragraph.split(" ")
            sentences =  list(set(sentences))
            if "" in sentences:
                sentences.remove("")
            # print sentences
            # print "\n"
            for sentence in sentences:
                a += collections.Counter(list(jieba.cut(sentence)))
        return a
    

    简单来说,在取出文章后把它先切成段,再切成句子,再对句子分词,最后把所有句子结果累加得到全文的词频。

    相关文章

      网友评论

          本文标题:小目标——基于热门公众号文章的词频分析

          本文链接:https://www.haomeiwen.com/subject/cpxdyttx.html