python 获取淘宝评论,透过关键字,从女生的角度选择商品,解决选择困难症

背景:

之所以产生这个程序的原因是,想买一块手表,看中了卡西欧的398元中的两款。

https://detail.tmall.com/item.htm?id=42487922508
https://detail.tmall.com/item.htm?id=39457378637

但是不知道到底该买那一款。在看这两个商品的评论时候,发现有评论说是送给男朋友的。正好在学习爬虫,于是就有了这么一个想法:把两个商品的评论都获取到,然后对比这个两个商品的评论,那个商品“送男朋友”的评论比较多,就表示在女生眼中,那一个就是比较好的。嗯,根据这个来决策,完美!

想法有了,怎么实现呢?最关键的是怎么获取到商品评论数据呢?总不能自己手动一页页去复制粘贴吧。
我也不知道啊,于是就在网上找资料,最后通过下面两个教程提供的代码实现了。

https://blog.csdn.net/qq_40946921/article/details/99684483
https://www.bilibili.com/video/av16701031

没有耐心的同学可以通过点击下面的链接,直接跳到最后看结论,到底哪一款手表比较好。源代码下载地址也在最后面。

点击跳转到结论

那么怎么获取到商品评论数据呢?

获取评论数据步骤:
1. 获取评论的链接地址

首先浏览器打开https://detail.tmall.com/item.htm?id=42487922508,然后点击查看累计评价,一直下拉到可以翻下一页的地方,按F12, 出现一个控制台,点击Network—>JS,最后点击下一页。如下图所示:
在这里插入图片描述
然后点击跳出来的链接:
在这里插入图片描述
点击它之后,会出现如下图所示:其中的Header, Preview, Response, Timing都是可以点击的,我们在Response中看到了评论数据,但是评论数据的链接地址是在Header里面。
在这里插入图片描述

2. 分析评论链接地址

把在Header的Request URL后面的链接地址复制出来:
https://rate.tmall.com/list_detail_rate.htm?itemId=42487922508&spuId=274798218&sellerId=749901026&order=3&currentPage=2&append=0&content=1&tagId=&posi=&picture=&groupId=&ua=098%23E1hvEpvNvJyvUvCkvvvvvjiPRsqUsjlPPLdWljivPmPh6j3bR2qWljnvRFLw1j3C9phvHnQGHermzYswSbsM7MaGM8qwBluCdphvmpvClWxxvvPqGUhCvvswj8xdJrMwzEATIHurvpvEvUViKfIvvxaadphvmpvCBHcDvvhgvOhCvvswMhtd0aMwzPQsDHurvpvEvUExBR6vv2C%2BCQhvCYsw7DdN%2BrItvpvhvvCvp86CvvyvvcX55pvvul0CvpvWzC1tcF5NznswOL34dphvmpvmv9OmvvvhiIwCvvpv9hCv2QhvCvvvMM%2FEvpvVvpCmpYswuphvmvvvpoYvZeppKphv8vvvphNMMQC%2FvvCHZ9vv94QvvhNjvvvmjvvvBGwvvvUUvvCHO9vv9J9EvpCW9vSq%2F1z6eE9OjjDx0f06W3vOJ1kHsfUpeEiTmEcBKFyzhmx%2Fgj7JhoTTwhVx6mTTVE9FhzjxVEk1%2BC1iQWpsjmTTwhVBeoTTVE9Fh9hCvvOv9hCvvvvtvpvhvvCvp8wCvvpvvhHh9phvHnsGtDzHzYswz21R7%2FakzmbwmliIRphvCvvvphvtvpvhvvCvp86Cvvyv9ByUhpvvjFeCvpvWzCAp4QSNznswt014RphvCvvvphmrvpvEvvHea1Zv9n0g9phv2nsGVVrozYswjvdS7u6CvvyvvB%2BZJQvCRk7rvpvEvvHyahpvvwyX&needFold=0&_ksTS=1572236677151_1956&callback=jsonp1957
在这里插入图片描述
呃,一大堆东西,看得头晕眼花…不过还好,参照教程,知道只要带下面这些参数就可以了。

itemId=42487922508:表示商品的id为42487922508
sellerId=749901026:表示店铺的id为 749901026
order=3:表示评论的排序方式是默认,如果order=1就表示评论按时间排序
currentPage=2:表示当前评论是第2页
_ksTS=1572236677151_1956:表示当时请求链接的时间戳
callback=jsonp1957:根据上面的时间戳来生成,就是1956+1

最后链接简化为:
https://rate.tmall.com/list_detail_rate.htm?itemId=42487922508& sellerId=749901026&order=3&currentPage=2&_ksTS=1572236677151_1956&callback=jsonp1957

3. 代码实现

其他的,比如构造浏览器头部信息,设置淘宝评论url参数,翻页,获取评论的过程,在代码中都有注释,就不在这里一一说明了

# *-* coding:utf-8 *-*
import requests
import time
import random

# 为什么引入下面两个东西呢?因为requests.get(url, verify=False)里面引入了verify参数,
# 就会出现InsecureRequestWarning: Unverified HTTPS request is being made告警
# 然后为了取消告警,就添加这两行代码
import urllib3

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)


# 来源 :
# https://blog.csdn.net/qq_40946921/article/details/99684483
# https://www.bilibili.com/video/av16701031


class TaoBao():
    url = "https://rate.tmall.com/list_detail_rate.htm"
    header = {
   
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
        "Accept-Encoding": "gzip, deflate, br",
        "Accept-Language": "zh-CN,zh;q=0.8",
        "Cache-Control": "max-age=0",
        "Connection": "close",
        "Upgrade-Insecure-Requests": "1",
        "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
        # 当出现rgv587_flag的时候,可以换为自己的cookie
        "cookie": "cna&
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值