统计词频-生成词云-数据分析报告(python R语言)

本文详细介绍了如何使用Python爬取和预处理洛杉矶旅游景点及酒店的文本数据,通过jieba分词进行词频统计,并用R语言生成词云展示结果。数据抓取自携程网站,经过数据清洗和预处理,最终统计了景点和酒店的出现次数,保存为CSV和JSON文件,并用Excel和R进行可视化呈现。
摘要由CSDN通过智能技术生成

数据分析

 

统计洛杉矶旅游地区的词频:景点词和酒店词

数据源:携程 网站的文本

数据分析:

统计词频(python语言)

用词云展示结果(R语言)

 

先看结果:

旅游景点的词频

 

 

 

 

 

 

 

旅游酒店的词频

 

 

  1. 统计酒店名和景点名出现次数

建立一个字典(数据类型),key为酒店/景点的名字,value为出现次数。用sort函数进行排序,保存文件为csv格式,以及json格式。整理成文档报告形式。

 

1. 数据抓取 (数据源)

1.1爬取携程网站游记

 

 

 

 

该网站一共有238张页面,每个页面9个游记标题简介,每个标题简介,对应一个游记文本。编写代码爬取每个文本数据,并分别保存为一个文本文档。

1.2编写代码的总体思路

在此页面,有分页机制,共有238张页面,用一个for循环控制页面,一个for循环控制每个页面的简介列表。列表中有9个简介,每个简介下面都会有一个url,该url对应该简介的网页,此网页中的文本就是爬取的内容。爬取文本后,保存为一个文档。

代码:

import pandas.io.json

import requests

from bs4 import BeautifulSoup

z = 1

def save_to_file(file_name, contents):

    fh = open(file_name, 'w')

    fh.write(contents)

    fh.close()

 

 

def getNewsDetail(url):

    global z

    z += 1

    #result={}

    res = requests.get(url)

    res.encoding = 'utf-8'

    soup = BeautifulSoup(res.text, 'html.parser')

    #result['article'] = ''.join([p.text.strip() for p in soup.select('.ctd_content')[:-1]])

    #a ='hhhh'

    a = ''.join([p.text.strip() for p in soup.select('.ctd_content')])

    name = 'xc{}.txt'

    tx = name.format(z)

    save_to_file(tx, a)

    #n += 1

    #df=pandas.DataFrame(a)

    print(z)

    #print(type(a))

    #lis.append(a)

    #f = open('i.txt', 'wb')

    #f.write(''.join([p.text.strip() for p in soup.select('.ctd_content')[:-1]]))

    #f.close()

 

    #l.append()

    #return result

def parseListLinks(urls):

    #results=[]

    res = requests.get(urls)

    res.encoding = 'utf-8'

    soup = BeautifulSoup(res.text, 'html.parser')

    for n in soup.select('a[class="journal-item cf"]'):

        #results.append(getNewsDetail('http://you.ctrip.com' + n['href']))

        getNewsDetail('http://you.ctrip.com' + n['href'])

        #return results

seedurl = 'http://you.ctrip.com/travels/losangeles250/t3-p{}.html'

#li = []

for i in range(1, 238):

    url = seedurl.format(i)

    parseListLinks(url)

    #df=pandas.DataFrame(lis)

    #df

    #xc=parseListLinks(url)

    #li.extend(xc)

#print(li)

 

结果生成2142个文档。

 

 

2数据预处理

处理工具jieba分词,用jieba分词处理分别处理2142个文本文档,因为酒店名称和景点名称都是由名词,或者多个名词组成的,直接用jiaba系统自带字典,选出每个文本中所有名词,处理后所有文档,保存为一个文档。

代码:

import jieba.analyse

import jieba.posseg

from sklearn import feature_extraction

from sklearn.feature_extraction.text import TfidfTransformer

from sklearn.feature_extraction.text import CountVectorizer

 

 

#词性标注,读取文件

def cut_news(n):

    global sum

    global sums

    na= 'xc{}.txt'

    op = na.format(n)

    with open(op, 'r')as f:

        for line in f:

            seg = jieba.posseg.cut(line.strip())  #jieba分词

            #print("/".join(seg)) 

            for i in seg:

               if i.flag =='nt' or i.flag =='ns'or i.flag =='nst' or i.flag =='n':#l.append(i.word,i.flag)

                  #print(i.word,i.flag)

           # segs = "/".join(seg)

                  sum += i.word

        sums= sum +'\n'          

        #sums=sum+'\n'

        #print(sum)

    return sums

           

 

# jieba分词器,通过词频获取关键词

 

def jieba_keywords(news: object) -> object:

    keywords = jieba.analyse.extract_tags(news, topK=100)

    print(keywords)

    

 

def save_to_file(file_name, contents):

    fh = open(file_name, 'w')

    fh.write(contents)

    fh.close()

 

    

if __name__ == '__main__':

    #new = read_news()

    #jieba_keywords(new)

    print('\n')

    

    #jieba_keywords(s)

    z=0

    for z in range(1,11):

      cut_news(z)

      name = 'tiqu{}.txt'

      tx = name.format(z)

      save_to_file(tx, sums)

    #tfidf_keywords(tx)

    #tfidf_keywords('news.txt')

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值