前言

之前爬取美团,马蜂窝等网站的数据都挺顺利,大众点评(这个反爬机制有点麻烦)在磕磕绊绊中也算成功(重点是网页页数的变化和关键字的隐藏替换)但携程居然遇到了瓶颈。

主要是查看源代码时发现关键商户信息根本就找不到,就很奇怪。对于关键信息评论发现翻页时网页的url不变,网上查了一下说是使用是动态的网址进行建构的,Ajax页面加载,那么通用的request.get()就不能用了,所以采取模拟浏览器进行数据爬取。

为什么选取龟峰呢?因为正好才从龟峰回来,这几乎是去过的人最少的5A级景区,大胆猜测数据可能没有那么多(相比去的其他地方而言)而且去的时候惊喜的给免了门票,所以用这个来测试。

PS:如有需要Python学习资料的小伙伴可以加下方的群去找免费管理员领取

第一步:打开网页

可能需要登录后才能查看评价

查看网页源代码

可以看到无法加载出关键评论信息

F12查看评论的具体代码,如下图找到评论列表,找到url和request payload

至此已经获取了网址最重要的内容

直接上完整代码

import requests

import json

import time

import csv

import re

c=open(r'D:\guifeng.csv','a+',newline='',encoding='utf-8')

fieldnames=['user','time','score','content']

writer=csv.DictWriter(c,fieldnames=fieldnames)

writer.writeheader()

head = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0'}

postUrl = "https://sec-m.ctrip.com/restapi/soa2/12530/json/viewCommentList"

data_1 = {

"pageid": "290510",

"viewid": "127481",

"tagid": "-11",

"pagenum": "1",

"pagesize": "10",

"contentType": "json",

"SortType": "1",

"head": {

"appid": "100013776",

"cid": "09031010311083118856",

"ctok": "",

"cver": "1.0",

"lang": "01",

"sid": "8888",

"syscode": "09",

"auth": "",

"extension": [

{

"name": "protocal",

"value": "https"

}

]

},

"ver": "7.10.3.0319180000"

}

html = requests.post(postUrl, data=json.dumps(data_1)).text

html = json.loads(html)

jingqu = '龟峰'

pages = html['data']['totalpage']

datas = []

for j in range(pages):

data1 = {

"pageid": "290510",

"viewid": "127481",

"tagid": "-11",

"pagenum": str(j + 1),

"pagesize": "10",

"contentType": "json",

"SortType": "1",

"head": {

"appid": "100013776",

"cid": "09031010311083118856",

"ctok": "",

"cver": "1.0",

"lang": "01",

"sid": "8888",

"syscode": "09",

"auth": "",

"extension": [

{

"name": "protocal",

"value": "https"

}

]

},

"ver": "7.10.3.0319180000"

}

datas.append(data1)

for k in datas[:50]:

print('正在抓取第' + k['pagenum'] + "页")

time.sleep(3)

html1 = requests.post(postUrl, data=json.dumps(k)).text

html1 = json.loads(html1)

comments = html1['data']['comments']

for i in comments:

user = i['uid']

time1 = i['date']

score = i['score']

content = i['content']

content = re.sub(" ", "", content)

content = re.sub("

", "", content)

writer.writerow({'user': user,'time':time1,'score': score,'content':content})

c.close()

按F5直接运行得出文件(自动存储在D盘里)

右键以记事本打开(如果使用excel需要先另存为否则初次打开会是乱码)

关键步骤解读

postUrl = "https://sec-m.ctrip.com/restapi/soa2/12530/json/viewCommentList"

这个网址是评论的通用网址不需要改动

可以改动的地方为:

c=open(r'D:\guifeng.csv','a+',newline='',encoding='utf-8')

存储的路径可以自定义,这里我直接用的是D盘

data_1 = {

"pageid": "290510",

"viewid": "127481",

"tagid": "-11",

"pagenum": "1",

"pagesize": "10",

"contentType": "json",

"SortType": "1",

"head": {

"appid": "100013776",

"cid": "09031010311083118856",

"ctok": "",

"cver": "1.0",

"lang": "01",

"sid": "8888",

"syscode": "09",

"auth": "",

"extension": [

{

"name": "protocal",

"value": "https"

}

]

},

"ver": "7.10.3.0319180000"

}

具体数据就是如下图需爬取网页评论代码里红圈的部分

同样的这个也是

data1 = {

"pageid": "290510",

"viewid": "127481",

"tagid": "-11",

"pagenum": str(j + 1),

"pagesize": "10",

"contentType": "json",

"SortType": "1",

"head": {

"appid": "100013776",

"cid": "09031010311083118856",

"ctok": "",

"cver": "1.0",

"lang": "01",

"sid": "8888",

"syscode": "09",

"auth": "",

"extension": [

{

"name": "protocal",

"value": "https"

}

]

},

"ver": "7.10.3.0319180000"

}

datas.append(data1)

注意:

"pagenum": str(j + 1),

这一步不可更改

最后

for k in datas[:50]:

print('正在抓取第' + k['pagenum'] + "页")

time.sleep(3)

这里的爬取的页数50是可以更改的

时间间隔3也是可以更改的

至此可以成功爬取携程上任意一家的评论,yes!!!

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

作者:一千口水牛

本文分享 CSDN - 松鼠爱吃饼干。

如有侵权,请联系 support@oschina.cn 删除。

本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

python爬取携程网游记_Python爬虫案例:爬取携程评论相关推荐

  1. python爬取多页_Python 爬虫 2 爬取多页网页

    本文内容: Requests.get 爬取多个页码的网页 例:爬取极客学院课程列表 爬虫步骤 打开目标网页,先查看网页源代码 get网页源码 找到想要的内容,找到规律,用正则表达式匹配,存储结果 Re ...

  2. python爬取新闻网站内容_python爬虫案例:抓取网易新闻

    此文属于入门级级别的爬虫,老司机们就不用看了. 本次主要是爬取网易新闻,包括新闻标题.作者.来源.发布时间.新闻正文. 首先我们打开163的网站,我们随意选择一个分类,这里我选的分类是国内新闻.然后鼠 ...

  3. python 网上爬取数据源码_Python爬虫经常爬不到数据,或许你可以看一下小编的这篇文章...

    1.最简单的Python爬虫 最简单的Python爬虫莫过于直接使用urllib.request.urlopen(url=某网站)或者requests.get(url=某网站)例如:爬取漫客栈里面的漫 ...

  4. python爬取网页停止_Python爬虫之爬取静态网页

    所谓网络爬虫,通俗的讲,就是通过向我们需要的URL发出http请求,获取该URL对应的http报文主体内容,之后提取该报文主体中我们所需要的信息.所以,想要学习python爬虫,需要具备一些http的 ...

  5. python爬取豆瓣小组_Python 爬虫实例+爬取豆瓣小组 + wordcloud 制作词云图

    目标 利用PYTHON爬取如下图中所有回答的内容,并且制作词云图. 用到的库 import requests # import json from PIL import Image from pyqu ...

  6. python爬虫爬取网页图片_Python爬虫:爬取网页图片

    先分析查找要爬取图片的路径 在浏览器F12 审查元素 整体实现代码 # -- coding:UTF-8 -- import requests from bs4 import BeautifulSoup ...

  7. python访问多个网页_Python 爬虫 2 爬取多页网页

    本文内容: Requests.get 爬取多个页码的网页 例:爬取极客学院课程列表 爬虫步骤 打开目标网页,先查看网页源代码 get网页源码 找到想要的内容,找到规律,用正则表达式匹配,存储结果 Re ...

  8. python爬取收费漫画_Python爬虫,爬取腾讯漫画实战

    先上个爬取的结果图 最后的结果为每部漫画按章节保存 运行环境 ide vs2019 python3.7 chrome.chromedriver chrome和chromedriver的版本需要相互对应 ...

  9. python爬取收费漫画_python爬取收费漫画_Python爬虫,爬取腾讯漫画实战

    先上个爬取的结果图 最后的结果为每部漫画按章节保存 运行环境 ide vs2019 python3.7 chrome.chromedriver chrome和chromedriver的版本需要相互对应 ...

最新文章

  1. 列表CheckBox全选 结合DataGrid 进行删除操作
  2. linux系统怎么关闭usb端口,linux系统挂载以及卸载USB接口的设备的解决办法
  3. ibatis 操作返回值
  4. 循环灯c语言,单片机c语言循环灯
  5. ​坚持写代码,这是晋级大师的唯一方法。
  6. 使用命令行工具创建WildFly OpenShift应用程序
  7. freetype字体位图转距离场_那些火遍ins的字体小技巧,不看你就亏了
  8. [Cocos2d-html5]关于压缩
  9. 计算机信息科学与应用技术学术论,第三届计算机信息科学与应用技术国际学术论坛(ISCISAT .DOC...
  10. 本地主机作服务器解决AJAX跨域请求访问数据的方法
  11. jdk8 lambda表达式
  12. 面向对象(Python):学习笔记之私有属性和私有方法
  13. 数字信号处理知识点总结(一):卷积
  14. 判断一个数字是否为素数 C++实现
  15. nodejieba的配置(windows)
  16. 为金融而生的区块链Injective(INJ)
  17. CSS——低调的奢华
  18. 能用好小人的老板才算优秀
  19. 电脑出现Checking media....解决方法
  20. win10如何手动强制关联某个类型文件的默认程序打开方式

热门文章

  1. 【ArcGIS Pro二次开发】(5):UI管理_自定义控件的位置
  2. Vijos - 文化之旅(最短路)
  3. 使用 Bud and Go 构建全栈应用程序
  4. Python数据类型之列表
  5. 数据库---- 增删改查
  6. 【机器视觉】工业传统视觉和3D视觉算法
  7. android XML文件注释
  8. 24道ES必知必会的面试题整理一波,从早上卷起来
  9. C语言字符串处理函数 strchr()和 strstr()的区别及使用
  10. RS485调试的几个要点