某人为了期末作业(非计算机系的文科生)想获取数据做分析,奈何不会八爪鱼,于是乎她成了我的甲方。甲方妈妈的需求是这样的:爬取携程网和同程网的对于三亚蜈支洲岛的评论。

一、爬取携程网的评论

1.1 分析

爬取的地址:https://you.ctrip.com/sight/sanya61/3244.html#comment

  • 评论在这里,并且有分页
  • 但是发现点击下一页的时候地址栏并没有变化

  • 所以这种情况打开F12控制台看看吧

  • 发现分页和这个响应有关,并且返回的是一个json数据的格式

  • pageIndex是页码,所以找到关键的点了

  • 获取到评论的地址:https://m.ctrip.com/restapi/soa2/13444/json/getCommentCollapseList?_fxpcqlniredt=09031028411306444964
  • 请求是POST请求

1.2 代码实现

  • 这里我只爬取了前50页
import requests
import json
import timeheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36',
}posturl = "https://m.ctrip.com/restapi/soa2/13444/json/getCommentCollapseList?_fxpcqlniredt=09031028411306444964"def getdata():j = 1for i in range(1, 51):request = {'arg': {'channelType': '2','collapseType': '0','commentTagId': '0','pageIndex': str(i),'pageSize': '10','poiId': '10558614','sortType': '3','sourceType': '1','starType': '0'},'head': {'auth': "",'cid': "09031028411306444964",'ctok': "",'cver': "1.0",'extension': [],'lang': "01",'sid': "8888",'syscode': "09",'xsid': ""}}time.sleep(3)html = requests.post(posturl, data=json.dumps(request), headers=headers)html1 = json.loads(html.text)print('正在爬取第'+str(i)+'页')items = html1['result']['items']#保存文件with open("xiecheng.txt", "a", newline='', encoding='utf-8') as f:for k in items:f.write('(' + str(j) + ')' + k['content'])f.write("\n")j += 1if __name__ == '__main__':getdata()

1.3 结果

二、爬取同程网的评论

2.1 分析

爬取地址:https://www.ly.com/scenery/BookSceneryTicket_8078.html

  • 评论在这里
  • 发现每次分页都会发送一个get请求

  • 直接在导航栏里访问这个地址,发现返回的是json数据
  • 并且参数只和page有关,其他的不变

  • 评论在这里

2.2 代码实现

  • 这里依然只爬取前50页数据
import requests
import urllib.request
import json
import timeheaders = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36"
}def getdate():j = 1for i in range(1,51):time.sleep(2)geturl = "https://www.ly.com/scenery/AjaxHelper/DianPingAjax.aspx?action=GetDianPingList&sid=8078&page=" + str(i) + "&pageSize=10"request = requests.get(url=geturl, headers=headers)html = json.loads(request.text)print('正在爬取第' + str(i) + '页')# 解析数据datas = html['dpList']with open("tongcheng.txt", "a", newline='', encoding='utf-8') as f:for k in datas:f.write('(' + str(j) + ')' + k['dpContent'])f.write("\n")j += 1if __name__ == '__main__':getdate()

2.3 结果

三、词云可视化

3.1 1.0版本

  • 用到wordcloud 和jieba库,还有PIL。没安装的可以pip install一下
  • 字体:可以去网上下载,然后放在同一个目录下
from wordcloud import WordCloud
import PIL.Image as image
import jieba
jieba.setLogLevel(jieba.logging.INFO)def trans_CN(text):word_list = jieba.cut(text)  #分词res = " ".join(word_list)return resdef xiecheng():with open("xiecheng.txt", encoding='utf-8') as fp:text = fp.read()cut_text = trans_CN(text)cloud = WordCloud(font_path="HYQiHei-25J.ttf", #设置字体width=1000,height=700,)wordcloud = cloud.generate(cut_text)image_p = wordcloud.to_image()wordcloud.to_file('xieciyun.jpg')image_p.show()def tongcheng():with open("tongcheng.txt", encoding='utf-8') as fp:text = fp.read()cut_text = trans_CN(text)cloud = WordCloud(font_path="HYQiHei-25J.ttf", #设置字体,不然会乱码width=1000,height=700,)wordcloud = cloud.generate(cut_text)image_p = wordcloud.to_image()wordcloud.to_file('tongciyun.jpg') #保存图片image_p.show() #查看图片if __name__ == '__main__':xiecheng()tongcheng()

结果

但是发现里面有很多我们不期望出现的词,比如说“的” ,“有”等。然后又去搜索解决方法,原来有个中文停用词,下载!!

3.2 2.0版本

停用词下载:https://gitee.com/UsingStuding/stopwords

  • 这里我的停用词为stop.txt
from wordcloud import WordCloud
import PIL.Image as image
import jieba
jieba.setLogLevel(jieba.logging.INFO)#中文停用词
stopwords = set()
content = [line.strip() for line in open('stop.txt','r',encoding='utf-8').readlines()]
stopwords.update(content)def trans_CN(text):word_list = jieba.cut(text)  #分词res = " ".join(word_list)return resdef xiecheng():with open("xiecheng.txt", encoding='utf-8') as fp:text = fp.read()cut_text = trans_CN(text)cloud = WordCloud(font_path="HYQiHei-25J.ttf",width=1000,height=700,stopwords=stopwords)wordcloud = cloud.generate(cut_text)image_p = wordcloud.to_image()wordcloud.to_file('xieciyun1.jpg')image_p.show()def tongcheng():with open("tongcheng.txt", encoding='utf-8') as fp:text = fp.read()cut_text = trans_CN(text)cloud = WordCloud(font_path="HYQiHei-25J.ttf", #设置字体,不然会乱码width=1000,height=700,stopwords = stopwords)wordcloud = cloud.generate(cut_text)image_p = wordcloud.to_image()wordcloud.to_file('tongciyun1.jpg') #保存图片image_p.show() #查看图片if __name__ == '__main__':xiecheng()tongcheng()

结果:

比1.0的版本好多了。

Python爬取携程和同程的景点评论并实现词云相关推荐

  1. 用python爬取《龙岭迷窟》评论,制作词云,看看与《盗墓笔记》的区别在哪里

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 本文章来自腾讯云 作者:Python进阶者 想要学习Python?有问题得不到第一 ...

  2. python爬取携程旅游评价信息词云图分析

    python爬取携程旅游评价信息词云图分析 前言 前面咱们已经分析过如何爬取携程旅游的相关信息,如果没有看过的,可以先跳转看一下前面的那篇博客:python 爬虫 一键爬取携程旅游团数据 这一篇呢,咱 ...

  3. python 爬取携程旅游景点评论

    python爬取携程旅游景点评论 爬取网址:https://you.ctrip.com/ 爬取评论全部代码 import requests import json import re import t ...

  4. python 携程登陆,Python爬取携程信息

    python爬取携程景点评论信息 今天要分析的网站是携程网,获取景点的用户评论,评论信息通过json返回API,页面是这个样子的 按下F12之后,F5刷新一下 具体需要URL Request的方式为P ...

  5. python爬取携程景区用户评论

    python爬取携程景区用户评论(爬虫时遇到翻页但url不变问题时的解决办法) python爬取携程景区用户评论 Ajax页面加载的页面和普通页面的不同 解决办法 效果 python爬取携程景区用户评 ...

  6. python爬取携程机票并发送过滤后的机票信息到指定邮箱

    0x0 前言 在疫情发生之前,在知乎上刷到一个回答,说是用服务器实现一个自动爬取机票并将过滤后的机票信息发送到自己的邮箱中,感觉十分有趣.由于疫情原因无法返校,加上家和学校相隔接近3000公里,再加上 ...

  7. python中飞机票购买程序_「最低折扣机票查询」Python 爬取携程所有机票找出最低折扣机票,让你无忧回家过年 - seo实验室...

    最低折扣机票查询 前言 对于平时出行大多数人都是选择坐高铁,当然了如果这是对于距离比较近的行程是最划算的,如果对于路途长远的人言,提前购买飞机票价格可能比高铁票更加的便宜,如果我们可以爬取机票数据并分 ...

  8. Python爬取携程机票代码实例

    Python爬取携程机票代码实例 现在携程的页面是通过接口传递数据的,不能直接使用xpath进行解析,需要模拟调用接口的步骤 dcity是指出发地的城市编码 acity是指目的地的城市编码 其他参数是 ...

  9. Python爬取京东书籍信息(包括书籍评论数、简介等)

    Python爬取京东书籍信息(包括书籍评论数.简介等) 一. 工具 二. 准备爬取的数据 三. 内容简述 四. 页面分析 (一) 寻找目录中商品所在标签 (二) 寻找页面中能爬取到的所有数据 (三) ...

  10. 基于Scrapy框架爬取豆瓣《复联4》影评,并生成词云

    基于Scrapy框架爬取豆瓣<复联4>影评,并生成词云 1. 介绍及开发环境 2. 爬虫实现 2.1 新建项目 2.2 构造请求 2.3 提取信息 2.4 数据存储 2.4 运行结果 3. ...

最新文章

  1. 王木匠,我服了你一半
  2. 上海东华计算机专业学硕复试,17届东华计算机初试+复试经验分享~
  3. Linux串口编程_termios
  4. 1-3.监督学习(supervised learning)
  5. 强大的jQuery图片查看器插件Viewer.js
  6. php修改找不到数据类型,php – 在$_POST中找不到输入类型=图像值
  7. mac pycharm安装设置_Mac系统Python、PyCharm安装及使用方法详解
  8. Linux驱动学习2
  9. 线程安全的HashMap,TreeMap,ArrayList,TreeSet,Set
  10. 把数据对象转成字符串_Android Json数据的转换
  11. Linux中如何查找占用硬盘体积最大的文件方法
  12. 全国计算机三级数据库技术选择题,全国计算机三级数据库技术备考练习题
  13. vue-router 中踏过的坑
  14. 北京大学信科计算机学院教学计划,北京大学信息科学的技术学院.ppt
  15. 【thinkphp5操作redis系列教程】集合类型之sCard,sSize
  16. win10系统1903版本设置默认英文输入法
  17. JAVA之easyUI
  18. 一铲子下去,服务器全瘫痪......
  19. SpringCloud Gateway API接口安全设计(加密 、签名)
  20. Go+ 发布 weekly release: v0.7.3

热门文章

  1. 优思学院|一文读懂SFMEA、DFMEA、PFMEA的关系
  2. 关于C笔记使用体验和比较
  3. 斯坦福CS229(吴恩达授)学习笔记(2)
  4. 数据库文件有哪些格式以及类型呢?
  5. java 注释 超链接_Java注释
  6. 软件测试用例详细规范
  7. intptr_t 和 uintptr_t类型使用总结
  8. 802.11无线WIFI协议学习笔记(一)
  9. 禁忌搜索算法代码注释
  10. 【硬件工程师】元器件选型都不会?