旅游评论情感分析(1)---爬虫(json篇)

从今天开始准备整理一下,之前的写过的一些小项目。

这一个项目是我唯一一个接触NLP的项目,因为身边的老师大多是从事CV 机器视觉一块的项目。
而对于我而言,NLP其实是我学习机器学习的初衷。


所以关于这一个项目,我们第一个要做的就是获取数据。
这是作为机器学习的根本。没有数据根本就谈不上学习。

前言—选择网站进行数据挖掘

这次实训我们一共获取了飞猪, 途牛, 驴妈妈, 美团, 携程, 去哪儿, 马蜂窝,猫途鹰等相关网站的关于阳朔旅游景点的评论。

这其中比较复杂的是大众点评,因为cookie限制非常严。我和另一个同学一人选择一半进行爬取数据。

以下我用去哪儿的网站爬虫为例。

  1. 获取网页链接
    旅游评论情感分析(1)---爬虫(json篇)_第1张图片
    这是我们事先做好阳朔在去哪儿网的网站调查。

我们发现其实去哪儿的数据是一个开发的平台,并且我不需要翻阅每一个网站,我只需要找到他每一页的json页面直接获取,十分的方便。

具体是怎么发现内含json直接传值,我们就必须先打开web控制台。
旅游评论情感分析(1)---爬虫(json篇)_第2张图片

我用的firefox浏览器,打开网选项,并且在网络中只看XHR。

这时候,我们再通过点击下一页评论就可以找到json的相关网站。

通过对比json网站,我们发现 他的网站格式都是遵守着"http://piao.qunar.com/ticket/detailLight/sightCommentList.json?sightId=" + 景点编号+ “&index=” + 景点编号
+ “&page=” + page编号 + “&pageSize=10&tagType=0”

所以我们就通过遍历excel文件,遍历每一个我们需要爬虫的每一个网站。

file = pd.read_excel(r"Excel路径")
name = file['name']         #获取word上面景区名字
#pagenums = file['page']     #获取总共页数
for city in range(len(file['name'])):
	weburl = file['url']  # 网站url
    webnum = file['id']  # 网站id
    
    url = r"http://piao.qunar.com/ticket/detailLight/sightCommentList.json?sightId=" + str(
        webnum[num]) + "&index=" + str(pagenum) \
          + "&page=" + str(pagenum) + "&pageSize=10&tagType=0"
  1. 查看网页布局

旅游评论情感分析(1)---爬虫(json篇)_第3张图片
由我们发现网站很明显的数据格式,一下让问题变得很简单了。我们现在需要做的时候是利用python 进行json数据的获取。

在此之前我们需要在获取json数据前,伪装一下自己的身份,给自己加上cookie,使得爬虫这一行为更像是人在点击获取数据。

下拉上述图片所示的消息头得到本电脑的cookie等相关数据。

headers = {
        'Cookie': '自己或其他人的信息',
        'User-Agent': ' 相关信息',
        'Referer': weburl[num]}

    #判断网络情况情况
    flag = True
    df = pd.DataFrame()
    requests.adapters.DEFAULT_RETRIES = 5
    try:
        response = requests.get(url, headers=headers)
    except ConnectionError:
        return df, flag
        pass
  1. 利用python实现在json中获取信息

我们需要的数据分别是评论,分数和日期。所以我们分别建立三个数组

		if (response.status_code == 200):
        html = response.text   #将html转化为text
        html.encode("utf-8")   #转化为UTF-8格式
        jsontest = json.loads(html) #将文本格式转化为json
        
        #然后根据网页显示的json格式获取到所需要的信息
        judge = jsonpath(jsontest, "$..author")
        if (type(judge) == bool):
            flag = False
        #建立 评论 分数, 时间,三个我们需要获取的指标
        
    comment = []
    score = []
    date = []
    
    try:
            # for x in jsonpath(jsontest,"$..userId"):
            # userId.append(x)
            # for x in jsonpath(jsontest,"$..comment"):
            # comment.append(x)
            for x in jsonpath(jsontest, "$..date"):
                date.append(x)
            for x in jsonpath(jsontest, "$..score"):
                score.append(x)
            for x in jsonpath(jsontest, "$..content"):
                comment.append(x)
        except TypeError:
            pass

旅游评论情感分析(1)---爬虫(json篇)_第4张图片

最后将三个数组整合成一个dataframe,并且输出我们所得到的数据,便完成了一个网站的爬虫工作。

你可能感兴趣的:(旅游评论情感分析(1)---爬虫(json篇))