python爬取携程网游记_Python爬虫案例:爬取携程评论
前言
之前爬取美团,马蜂窝等网站的数据都挺顺利,大众点评(这个反爬机制有点麻烦)在磕磕绊绊中也算成功(重点是网页页数的变化和关键字的隐藏替换)但携程居然遇到了瓶颈。
主要是查看源代码时发现关键商户信息根本就找不到,就很奇怪。对于关键信息评论发现翻页时网页的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爬虫案例:爬取携程评论相关推荐
- python爬取多页_Python 爬虫 2 爬取多页网页
本文内容: Requests.get 爬取多个页码的网页 例:爬取极客学院课程列表 爬虫步骤 打开目标网页,先查看网页源代码 get网页源码 找到想要的内容,找到规律,用正则表达式匹配,存储结果 Re ...
- python爬取新闻网站内容_python爬虫案例:抓取网易新闻
此文属于入门级级别的爬虫,老司机们就不用看了. 本次主要是爬取网易新闻,包括新闻标题.作者.来源.发布时间.新闻正文. 首先我们打开163的网站,我们随意选择一个分类,这里我选的分类是国内新闻.然后鼠 ...
- python 网上爬取数据源码_Python爬虫经常爬不到数据,或许你可以看一下小编的这篇文章...
1.最简单的Python爬虫 最简单的Python爬虫莫过于直接使用urllib.request.urlopen(url=某网站)或者requests.get(url=某网站)例如:爬取漫客栈里面的漫 ...
- python爬取网页停止_Python爬虫之爬取静态网页
所谓网络爬虫,通俗的讲,就是通过向我们需要的URL发出http请求,获取该URL对应的http报文主体内容,之后提取该报文主体中我们所需要的信息.所以,想要学习python爬虫,需要具备一些http的 ...
- python爬取豆瓣小组_Python 爬虫实例+爬取豆瓣小组 + wordcloud 制作词云图
目标 利用PYTHON爬取如下图中所有回答的内容,并且制作词云图. 用到的库 import requests # import json from PIL import Image from pyqu ...
- python爬虫爬取网页图片_Python爬虫:爬取网页图片
先分析查找要爬取图片的路径 在浏览器F12 审查元素 整体实现代码 # -- coding:UTF-8 -- import requests from bs4 import BeautifulSoup ...
- python访问多个网页_Python 爬虫 2 爬取多页网页
本文内容: Requests.get 爬取多个页码的网页 例:爬取极客学院课程列表 爬虫步骤 打开目标网页,先查看网页源代码 get网页源码 找到想要的内容,找到规律,用正则表达式匹配,存储结果 Re ...
- python爬取收费漫画_Python爬虫,爬取腾讯漫画实战
先上个爬取的结果图 最后的结果为每部漫画按章节保存 运行环境 ide vs2019 python3.7 chrome.chromedriver chrome和chromedriver的版本需要相互对应 ...
- python爬取收费漫画_python爬取收费漫画_Python爬虫,爬取腾讯漫画实战
先上个爬取的结果图 最后的结果为每部漫画按章节保存 运行环境 ide vs2019 python3.7 chrome.chromedriver chrome和chromedriver的版本需要相互对应 ...
最新文章
- 列表CheckBox全选 结合DataGrid 进行删除操作
- linux系统怎么关闭usb端口,linux系统挂载以及卸载USB接口的设备的解决办法
- ibatis 操作返回值
- 循环灯c语言,单片机c语言循环灯
- ​坚持写代码,这是晋级大师的唯一方法。
- 使用命令行工具创建WildFly OpenShift应用程序
- freetype字体位图转距离场_那些火遍ins的字体小技巧,不看你就亏了
- [Cocos2d-html5]关于压缩
- 计算机信息科学与应用技术学术论,第三届计算机信息科学与应用技术国际学术论坛(ISCISAT .DOC...
- 本地主机作服务器解决AJAX跨域请求访问数据的方法
- jdk8 lambda表达式
- 面向对象(Python):学习笔记之私有属性和私有方法
- 数字信号处理知识点总结(一):卷积
- 判断一个数字是否为素数 C++实现
- nodejieba的配置(windows)
- 为金融而生的区块链Injective(INJ)
- CSS——低调的奢华
- 能用好小人的老板才算优秀
- 电脑出现Checking media....解决方法
- win10如何手动强制关联某个类型文件的默认程序打开方式