1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Python爬虫——去哪儿网评论

Python爬虫——去哪儿网评论

时间:2020-05-31 21:34:48

相关推荐

Python爬虫——去哪儿网评论

需求

由于疫情的影响,可能大家更加偏向于与家人在周边游~ 所以我们来到去哪儿网的周边游:/p/around

界面如下:

可以看到,我们的周边游也有很多页的数据~如果我们需要去货比n家的话,当然是数据越多越好。但是为了前期分析的便利,我们以第一页为主。那在该页,我们需要获取到的基本信息为:标题,价格,详情页跳转链接

基础需求实现

还是老步骤,在写代码之前,我们需要定位到需求数据所在的url。先来 /p/around 康康把~

F12 打开谷歌自带的工具看到 Network/Preview 确认需要数据是否在该页面

结果发现,OMG,没有想要的数据。咋办呢?

因为最开始提到该数据比较多存在翻页,所以我们就需要揣测一下,数据是否是 ajax 动态加载 的。所以我们操作如下:

有接口出现,八九不离十了。但是为了避免意外,我们进一步到该接口的 preview 进行确认。

在这里,我们就可以开始写一小部分代码获取这一部分数据了。但是,我们还有个需求,如果想要了解一个东西到底好不好,很直观的就是看评价。点进详情页中,如下,点击****条评论。

则会自己定位到下图,那我需要获取的则是好评的条数,中评的条数,差评的条数等等。

那具体看到,实际上这个数据也是动态加载的~所以老套路看看…哇奥,bingo

难道就这么简单?emmm…我们来看一下 Headers,确认一下请求的链接以及请求的方式。

首先,来看一下这个请求链接,貌似之前并没有见过。那如果说其它的详情页的数据链接跟这个是一致的就很好办,but…我们来看一下

emmm…https://后面几个字母不一样呀~那接下来就是要找到每个详情页对应的这个字母(毕竟后面的都是一致的)。怎么来找呢?这个老手破解的思路非常重要,我们来思考:当每个详情页的数据链接都不一样时,我们应该回到开始的页面去搜索。

所以,我们就找到了评论url的出处~源自于第一个获取数据的接口。

其次我们需要注意的是,评论数据的获取是一个post请求,那么当我们光溜溜的直接请求时,就请求不到数据。所以我们往Headers下面来看到post请求需要携带的参数。

如果说,每一个详情页的评论数据的post参数都一致,那么二话不说,直接上代码。但是,这块我们还是得通过对比分析:

https://ukym3./user/comment/product/queryComments.json的请求参数:type: allpageNo: 2pageSize: 10productIds: 3054605399,3402458495,2596939253,149348919rateStatus: ALLhttps://zjjs1./user/comment/product/queryComments.json的请求参数:type: allpageNo: 2pageSize: 10productIds: 2442508559,4227072736,1873936955,4042408069rateStatus: ALL

OMG,脑阔痛~又发现 productIds 都是不一致的,所以猜测这个 productIds 仍然是动态加载的数据,或者是 js 生成的。

先按第一种猜测来把!清空所有加载的数据,然后选择 xhr,进行页面刷新…就一个个瞟,或者搜索都可以~在如下发现数据

就这样找到了,post 请求的参数 productIds~但是因为其是动态的,我们仍然要通过请求来获取,来分析该数据接口的url

https://ukym3./api/duplicateProduct/teamPrice.json?pId=2596939253&month=-10&dep=%E9%95%BF%E6%B2%99&_=1601294926301https://zjjs1./api/duplicateProduct/teamPrice.json?pId=1873936955&month=-10&dep=%E9%95%BF%E6%B2%99&_=1601295518744

这个链接 老Amy 亲测,实际上只要保留到 month 前就可以正常的请求数据,所以我们着重关注如何找到 pId。这个需要在之前瞟的时候,要稍作留意,仍然回到最开始的解析页面搜索~冇(mao)问题

okk,到这里,我们就完成了页面的解析。总结如下:

获取 encodeId–>pId=3948728531 ,summary/supplier/url–>//ukym3.对https://ukym3./api/duplicateProduct/teamPrice.json?pId=2596939253&month=-10 发送请求,获取 变动的4个productIds对https://ukym3./user/comment/product/queryComments.json 发送post请求

然后,代码也有百来行,大概获取了10页的数据,我就不粘贴到下面了,给大家放在公众号后台,需要的话请回复公众号:“国庆去哪儿”暗号获取。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。