【爬虫】Python爬取电商平台评论

2023-10-27


更新:目前淘宝的参数已经变更,这是2020年(2020.4)的代码参数,已经无法使用。但是,思路仍然可以参考。


目前网站上很多爬取评论的博文都已经失效了,所以自己尝试写一篇目前可行的爬取代码。我们以爬取淘宝的APPLE官方旗舰店的Iphone11为例。
打开淘宝页面,按下F12快捷键,进入开发者模式。点击累计评价。然后在开发者窗口左上角输入list,找到相应的进程。在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
这里发现了评论。寻找请求头headers信息。找到请求的url,发现其中只有三个参数是会改变的。发现其中的规律。
首先是"currentPage"参数,这是评论的页码,
第二个是"_ksTS"参数,通过观察得出这是一个时间戳,并且下划线前面的是
13位数字,这是固定的,多余的时间戳都放到下划线的后面。
这里用time模块的time方法构造。

import time
t_param=time.time()
t_list=str(t_param).split(".") #将时间戳格式拆分
t_list[0]+t_list[1][:3] #这是下划线前面的部分
t_list[1][3:]   #这是下划线后面的部分

第三个参数是callback回调参数。这个参数前面的"jsonp"是固定的,后面的数字是time参数的最后三个数字加一,图中的337=336+1。

"callback":str(int(t_list[1][3:])+1)

这样页面的url就基本构造完成,只需把url的上述三个参数删除即可。

其实这里的url里面的 ua 参数好像是可有可无的,不影响,可以自己尝试一下。

url=“https://rate.tmall.com/list_detail_rate.htm?itemId=602659642364&sellerId=1917047079”
url构造好了现在只需构造请求头信息,参数信息均可在Headers选项中找到。

headers={
		"Cookie":""
		"referer":""
		"User-Agent":""
		}

现在将代码整合:

import requests
import time
import json
def get_content(url):
	t_param=time.time()
	t_list=str(t_param).split(".")
	headers={
		"Cookie":"",
		"referer":"",
		"User-Agent":""
			}
	params={
			"callback":str(int(t_list[1][3:])+1),
			"_ksTS":t_list[0]+t_list[1][:3]+"_"+t_list[1][3:],
			"currentPage":"1"
			}
	res=requests.get(url,params=params,headers=headers).text
	print(res)

这里我们先看一下获取的文本的格式,可以看出这是一个json格式的,但是这个文本在前面多了冗余的部分我们需要将它删除才能正确解析。

res=requests.get(url,params=params,headers=headers).text[len(str(int(t_list[1][3:])+1))+3:-1]
#前面的多余部分就是"_ksTS"参数下划线后面的部分
#注意末尾还有一个括号,不同评论索引需要进行相应的调整。

在这里插入图片描述
接下来使用json库进行解析。输出如下。这里如果报错,应该是text处的索引不对,可以确认一遍进行修改。

res2=json.loads(res)
res3=json.dumps(res2,indent=4)
#以上两步是为了美化json的输出格式,方便获取内容,省略也可。
result=json.loads(res3)

在这里插入图片描述
要获取我们的需要的信息需要进行索引。结果如下。

result_content=result["rateDetail"]["rateList"][0]["rateContent"]
#索引中的[0]是获取第一条评论,可以进行循环一页获取20条评论。这里只是示例。

在这里插入图片描述
这里就基本运行完成。可以整合一下代码并加入循环。

import requests
import time
import json
def get_content(url):
	t_param=time.time()
	t_list=str(t_param).split(".")
	headers={
		"Cookie":"",
		"referer":"",
		"User-Agent":""
			}
	params={
			"callback":str(int(t_list[1][3:])+1),
			"_ksTS":t_list[0]+t_list[1][:3]+"_"+t_list[1][3:],
			"currentPage":"1"
			}
	res=requests.get(url,params=params,headers=headers).text[len(str(int(t_list[1][3:])+1))+3:-1]
	res2=json.loads(res)
	res3=json.dumps(res2,indent=4)
	#以上两步是为了美化json的输出格式,方便获取内容,省略也可。
	result=json.loads(res3)
	for items in range(20): 
		result_content=result["rateDetail"]["rateList"][items]["rateContent"]
		print(result_content)
	

后续可以自己完善代码,将结果写入文件,也可以加入循环爬取更多页码的评论。这里不再详写。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【爬虫】Python爬取电商平台评论 的相关文章

  • 如何查找分布式dask中任务失败的原因?

    我正在开发一个分布式计算系统dask distributed 我通过以下方式提交给它的任务Executor map功能有时会失败 而其他看起来相同的功能却可以成功运行 该框架是否提供了诊断问题的方法 update我所说的失败是指增加 Bok
  • 如何在算术表达式的结果上添加 SQLAlchemy 标签?

    我如何将这样的东西翻译成 SQLAlchemy select x y as difference 我知道该怎么做 x label foo 但我不确定在哪里放置下面的 label 方法调用 select table c x table c y
  • 如何用xlrd读取公式

    我正在尝试做一个解析器 它读取几个 Excel 文件 我通常需要位于行底部的值 您可以在其中找到所有上部元素的总和 因此 单元格值实际上是 sum 或 A5 0 5 可以说 对于使用 Excel 打开此文件的用户来说 它看起来像一个数字 这
  • multiprocessing.freeze_support()

    为什么多处理模块需要调用特定的function http docs python org dev library multiprocessing html multiprocessing freeze support在被 冻结 以生成 Wi
  • 远程控制或脚本打开 Office 从 Python 编辑 Word 文档

    我想 最好在 Windows 上 在特定文档上启动 Open Office 搜索固定字符串并将其替换为我的程序选择的另一个字符串 我该如何从外部 Python 程序中做到这一点 OLE 什么 原生 Python 脚本解决方案 The doc
  • pandas 两个数据框交叉连接[重复]

    这个问题在这里已经有答案了 我找不到有关交叉联接的任何内容 包括合并 联接或其他一些内容 我需要使用 my function 作为 myfunc 处理两个数据帧 相当于 for itemA in df1 iterrows for itemB
  • 一起使用 Argparse 和 Json

    我是 Python 初学者 我想知道 Argparse 和 JSON 是否可以一起使用 说 我有变量p q r 我可以将它们添加到 argparse 中 parser add argument p param1 help x variabl
  • 使用 Python 解析 XML,解析外部 ENTITY 引用

    在我的 S1000D xml 中 它指定了一个带有对公共 URL 的引用的 DOCTYPE 该 URL 包含对包含所有有效字符实体的许多其他文件的引用 我使用 xml etree ElementTree 和 lxml 尝试解析它并得到解析错
  • 如何将同步函数包装在异步协程中?

    我在用着aiohttp https github com aio libs aiohttp构建一个 API 服务器 将 TCP 请求发送到单独的服务器 发送 TCP 请求的模块是同步的 对于我来说是一个黑匣子 所以我的问题是这些请求阻塞了整
  • 这可能是因为 cuDNN 初始化失败,因此请尝试查看上面是否打印了警告日志消息。 [操作:Conv2D]

    我在 anaconda 中安装了 TensorFlow GPU 2 0 当我安装它并导入包 然后运行我的 CNN 模型时 它工作正常 但当我尝试运行训练模型时 出现错误 这是我的错误报告 Epoch 1 50 UnknownError Tr
  • 如何解码 dtype=numpy.string_ 的 numpy 数组?

    我需要使用 Python 3 解码按以下方式编码的字符串 gt gt gt s numpy asarray numpy string hello nworld gt gt gt s array b hello nworld dtype S1
  • Pandas,按最大返回值进行分组 AssertionError:

    熊猫有问题 我想听听你的意见 我有这个数据框 我需要在其中获取最大值 代码就在下面 df stack pd DataFrame 1 0 2016 0 NonResidential Hotel 98101 0 DOWNTOWN 47 6122
  • 别碰我的女人

    我讨厌的一件事迪斯图尔斯 http docs python org distutils 我猜他是邪恶的人 他这样做了 https github com python cpython blob 300dd552b15825abfe0e367a
  • 与函数复合 UniqueConstraint

    一个快速的 SQLAlchemy 问题 我有一个 文档 类 其属性为 数字 和 日期 我需要确保没有重复的号码同年 是 有没有办法对 数字 年份 日期 进行UniqueConstraint 我应该使用唯一索引吗 我如何声明功能部分 SQLA
  • python 中的基本矩阵转置

    我尝试了 python 中矩阵转置的最基本方法 但是 我没有得到所需的结果 接下来是代码 A 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 print A def TS A B A for i in range len A
  • 如何表示类的实例与将其作为输入的类之间的关系?

    我有一堂课叫House 这个类的实例是house class House def init self height length self height height self length length def housePlan hou
  • dask allocate() 或 apply() 中的变量列名

    我有适用于pandas 但我在将其转换为使用时遇到问题dask 有一个部分解决方案here https stackoverflow com questions 32363114 how do i change rows and column
  • python csv按列转换为字典

    是否可以将 csv 文件中的数据读取到字典中 使得列的第一行是键 同一列的其余行构成列表的值 例如 我有一个 csv 文件 strings numbers colors string1 1 blue string2 2 red string
  • 将数组从 .npy 文件读入 Fortran 90

    我使用 Python 以二维数组 例如 X 的形式生成一些初始数据 然后使用 Fortran 对它们进行一些计算 最初 当数组大小约为 10 000 x 10 000 时 np savetxt 在速度方面表现良好 但是一旦我开始增加数组的维
  • Python - 打印漂亮的 XML 为空标签文本创建开始和结束标签

    我正在编写一个 python 应用程序 它创建一个 ElementTree XML 然后使用 minidom 的 toprettyxml 将其写入文件 final tree minidom parseString ET tostring r

随机推荐

  • Android SDK 安装与Manager下载tools详情

    Android SDK 安装与Manager下载tools详情 Android SDK 安装 前往android网站下载 下载图片红色处即可 下载后双击按步骤安装即可 Manager tools安装 进入安装的文件目录 找到SDK Mana
  • 区块链的5个特征

    id BSN 2021 公众号 BSN研习社 人们看重区块链 最重要的是看重区块链所具有的不可替代的功能和特点 这些特点包括去中心化 开放性 独立性 安全性 匿名性 去中心化 区块链技术不依赖额外的第三方管理机构或硬件设施 没有中心管制 除
  • Linux资源监控工具

    概述 glances 是一款用于 Linux BSD 的开源命令行系统监视工具 它使用 Python 语言开发 能够监视 CPU 负载 内存 磁盘 I O 网络流量 网速 文件系统 系统温度等信息 本文介绍 glances 的使用方法和技巧
  • 类注释文档编写方法

    对于Java语言 最体贴的一项设计就是它并没有打算让人们为了写程序而写程序 人们也需要考虑程序的文档化问题 对于程序的文档化 最大的问题莫过于对文档的维护 若文档与代码分离 那么每次改变代码后都要改变文档 这无疑会变成相当麻烦的一件事情 解
  • 大数据Java基础第十九天作业

    第一题 简单的URL获取资源下载 import java net URL import java net URLConnection import java io InputStream import java io FileOutputS
  • arm64 linux pgd_offset_k 代码阅读过程中的疑问记录

    start kernel gt setup arch gt early fixmap init gt pgd offset k pgd t pgd unsigned long addr FIXADDR START 0xffff7ffffab
  • 二维背包(包含优化)

    二维背包 二维背包 二维背包相较于01背包 多了一个限制 就是背包的重量有了限制 但是其本质和01背包并没有什么区别 只是多遍历一轮 f i j k 状态表示 解锁了前i个物品 背包可以承载体积为j 可以承重为w 状态转移方程 f i j
  • 2023-9-11 高斯消元解异或线性方程组

    题目链接 高斯消元解异或线性方程组 include
  • 小米 安卓等 安卓 机器 开启9008端口进入深刷模式 深刷模式 9008工程线深度线制作教程

    开启9008端口进入深刷模式 adb reboot edl fastboot oem edl 下面这个可能用于其他手机 fastboot reboot emergency 小米绕BL锁9008工程线深度线制作教程 此方法仅适用小米高通机型
  • uniapp 点击动画_uni-app 点击元素左右抖动效果

    点击 data return animation 动画样式 methods sidebarClick this animation shake setTimeout gt this animation 2000 display flex f
  • 获取一个物体挂载的脚本

    获取一个物体挂载的脚本 m modelControl GetComponent enabled false
  • 前端自定义列表排序

    项目中有几个页面都涉及了排序且都是前端排序 为了方便高效 将所有的排序方式整理成一个数组放在公共的js文件中 dictionary js 排序数组 let rankType key rank 这个是后端返回数据中的某个字段 value 按排
  • 【第十四届蓝桥杯三月真题刷题训练——第 10 天(3.13)& 裁纸刀 & 刷题统计 & 修剪灌木 & k倍区间 & k倍区间加强版】

    第一题 裁纸刀 解题 通过观察发现 外围四边都需要剪一次 而中间每行需要总行号 n 1 其余的一行的列需要剪 总列 m 1 总共n行 所以 得出公式 4 n 1 m 1 n public class Main public static v
  • 阿里云磁盘异常爆满的原因及解决方法

    阿里云磁盘提示使用率为100 提示网站打不开 原因则无一例外都是磁盘爆满 导致mysql停止工作 删除部分文件后 网站恢复访问 不过过不多久 网站又再次因为磁盘爆满而打不开 在服务器上找了一圈的原因 终于发现了几个特别大的文件 linux查
  • 2021:VinVL: Revisiting Visual Representations in Vision-Language Models

    摘要 本文详细研究了视觉语言 VL 任务的视觉表示的改进 并开发一种改进的对象检测模型 以提供图像的对象为中心的表示 与最广泛使用的bottom up和top down模型相比 新的模型更大 为VL任务设计的更好 在更大的训练语料库 结合多
  • Maven环境安装(保姆式教学安装)

    写在开始 本文主要介绍了 Maven 的环境安装过程 介绍的比较详细 另外介绍了maven的基础介绍 常用命令和依赖关系等等 1 Maven环境安装 保姆级介绍 a 安装Maven 下载maven3 8 6版本 下载链接如下 maven下载
  • 谷歌浏览器安装webstorm插件JetBrains IDE Support Chrome下载地址及使用方法实现自动刷新

    1 参考链接 JetBrains IDE Support Chrome插件使用方法 如果插件安装失败考虑下载低版本谷歌浏览器 怎么在谷歌浏览器中安装 crx扩展名的离线chrome插件 2 下载地址 插件点击下载 3 安装好之后具体使用步骤
  • linux系统中毒的解决过程,Linux系统是否中毒或被入侵几种查看方法

    不管电脑用户使用的是什么系统 肯定都不想电脑系统被病毒之类非法入侵吧 在Linux系统也是如此 那么Linux系统中怎么查看是否有被入侵呢 下面豆豆整理了几种查看系统是否被入侵的方法 Linux系统被入侵几种查看方法 1 检查进程 复制代码
  • Html 补充

    accesskey 设置快捷键 Alt 设定的键 a href https blog csdn net lcatake article details 131716967 spm 1001 2014 3001 5501 target bla
  • 【爬虫】Python爬取电商平台评论

    更新 目前淘宝的参数已经变更 这是2020年 2020 4 的代码参数 已经无法使用 但是 思路仍然可以参考 目前网站上很多爬取评论的博文都已经失效了 所以自己尝试写一篇目前可行的爬取代码 我们以爬取淘宝的APPLE官方旗舰店的Iphone