Python爬虫实战 | 爬取拼多多商品的详情价格SKU数据

图片

本案例将为大家演示如何爬取拼多多商品的详情数据。目的是爬取大量的商品以及商品的评论,所以在程序设计上要考虑到该爬虫的高并发以及持久化存储。爬虫工具选用了Scrapy框架,以满足爬虫的高并发请求任务;持久化存储用了MongoDB,对直接存储JSON数据比较方便。

01

分析网页

拼多多触屏版一般是为了适配手机浏览器而做的版本,尽管触屏版在PC端的样式不适配,但并不影响数据浏览和抓包。在PC端浏览器中用调试工具查看请求信息,通过线索查找,并没有发现该网站实际获取数据的请求,但是每次下拉刷新页面确实有数据更新,在浏览器调试工具中没有看到新的请求的产生,是由于这个请求是网页内的Ajax请求,可以通过分析网站JavaScript源代码的方式,找到请求地址和参数规则,这是一种方法;第二种方法就是在后面介绍到的,用专业的抓包工具抓包分析网络请求。

常用的抓包工具有Fiddler、Charles、Wireshark等。本案例在分析网页请求时,使用Charles,以便更清楚地看到网络请求的过程。

Charles(Charles Web Debugging Proxy)是常用的网络封包截取工具,在移动开发中应用较多。使用Charles时,为了调试与服务器端的网络通信协议,经常需要截取网络封包来一并分析。Charles通过构建代理服务,让本地请求都通过Charles的代理之后访问公网,从而实现了网络封包的截取和分析。除了可以在做移动开发中调试端口外,Charles也可以用于分析第三方接口的通信协议。Charles的SSL功能还可以完成HTTPS协议分析。

Charles主要提供两种查看封包的视图:Structure和 Sequence。Structure视图能够将网络请求按访问的域名分类。例如,某个域名下如果有n个资源请求,则所有此域名下的请求都会被详细分类。视图则是按照请求发生的顺序来展示的。

Charles除了基本的抓包功能,还可以修改网络请求参数、支持模拟慢速网络、抓取手机端的请求、抓取部分HTTPS的包。

通过浏览网页发现,商品评论的URL,需要传入goods_id这个参数,所以需要首先爬取商品ID,商品ID可以在商品列表页看到,具体抓包的操作步骤如下。

(1) 在浏览器输入目标网址(拼多多触频版的网址),其列表页面如图12-1所示。

图片

■ 图12-1拼多多列表页面

(2) 向下滑动页面,同时在Charles中可以看到有域名为yangkeduo.com的请求产生。

(3) 将Charles视图模式切换至Structure,输入过滤条件yangkeduo,找到请求接口。

(4) 浏览网页,切换至详情页的评论。

(5) 在Charles中,找到评论接口的请求地址。

(6) 在浏览器中,测试找到的地址是否可用。

提示/

虽然Charles可以支持HTTPS抓包,在分析移动端应用网络请求时也是一个不可或缺的工具,但是随着移动安全技术的发展,很多移动App用到了SSL Pinning技术,即SSL双向验证,该技术可实现在客户端和服务器端的双向验证,移动端的壳加密技术也使移动端HTTPS抓包越来越困难,目前对抗SSL Pinning的技术,可行的方案是XPost框架,有兴趣的读者可以进一步了解相关知识。

通过上述分析,得到了商品列表接口(该接口为分析过程中的接口地址,接口地址会改版,此处仅做参考):

http://apiv3.yangkeduo.com/api/alexa/v1/goods?list_update_time=true&platform=1&assist_allowed=1&page=2&size=40

商品评论的接口地址是:

http://apiv3.yangkeduo.com/reviews/" + str(item['goods_id']) + "/list?&size=20",

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/240383.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python:五种算法(SSA、WOA、GWO、PSO、GA)求解23个测试函数(python代码)

一、五种算法简介 1、麻雀搜索算法SSA 2、鲸鱼优化算法WOA 3、灰狼优化算法GWO 4、粒子群优化算法PSO 5、遗传算法GA 二、5种算法求解23个函数 (1)23个函数简介 参考文献: [1] Yao X, Liu Y, Lin G M. Evolutionary programming made…

vue 集成行政区域选择插件region和数据回显

故事:最近,项目需要进行行政区域围栏的绘制,由于老旧项目是利用js保存全国行政区域地址和编码,在选择器select进行匹配显示,但此方法复杂,因此选择集成区域插件region 步骤一:用命令安装region…

Vue3-09-条件渲染-v-show 的基本使用

v-show 的作用 v-show 可以根据条件表达式的值【展示】或【隐藏】html 元素。v-show 的特点 v-show 的实现方式是 控制 dom 元素的 css的 display的属性, 因此,无论该元素是否展示,该元素都会正常渲染在页面上, 当v-show 的 条件…

如何通过 SSH 访问 VirtualBox 的虚机

VirtualBox 是一款免费虚机软件。在用户使用它安装了 linux 以后,它默认只提供了控制台的管理画面。 直接使用控制台管理 Linux 没有使用诸如 putty 或者 vscode 这样的 ssh 远程管理工具方便。那么可不可以直接使用 ssh 访问 VirtualBox 上的 Linux 呢&#xff1f…

GNN 学习笔记

稍微看一下之后备用。 【图神经网络综述】GNN原理+落地应用实现框架全解_gnn实现-CSDN博客 GNN相比CNN最大的区别在于数据结构,CNN一般作用在二维、三维数据里,如图像、表格数据等,可以进行卷积操作。而GNN作用在一个由节点和边…

模拟目录管理 - 华为OD统一考试(C卷)

OD统一考试(C卷) 分值: 200分 题解: Java / Python / C++ 题目描述 实现一个模拟目录管理功能的软件,输入一个命令序列,输出最后一条命令运行结果。 支持命令: 1)创建目录命令: mkdir 目录名称,如mkdir abc为在当前目录创建abc目录,如果已存在同名目录则不执行任何操作…

案例055:基于微信小程序的四六级词汇

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

超简单的新手重装Win10系统教程图解

如果我们的电脑系统出现问题了,那么就可以选择重装安装系统,轻轻松松解决系统问题,从而恢复对电脑的正常使用。但是,作为新手用户不懂很多的装机专业知识,所以重装系统的难度比较大,接下来小编给大家介绍超…

pytest-fixtured自动化测试详解

fixture的作用 1.同unittest的setup和teardown,作为测试前后的初始化设置。 fixture的使用 1.作为前置条件使用 2.fixture的的作用范围 1.作为前置条件使用 pytest.fixture() def a():return 3def test_b(a):assert a3 2.fixture的作用范围 首先实例化更高范围的fixture…

Javascript高频面试题

系列文章目录 文章目录 系列文章目录前言1.JavaScript常见数据类型null 和 undefind区别symbol(ES6新增)、bigInt(ES10新增) 2.JavaScript判断数据类型的方式3. 和 区别,分别在什么情况使用?4.变量声明 va…

Unity检测AssetBundle是否循环依赖

原理:bundle的依赖关系构建一个二维的矩阵图,如果对角线相互依赖(用1标记)则表示循环依赖。 using PlasticGui; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; public cl…

Redis缓存异常问题,常用解决方案总结

前言 Redis缓存异常问题分别是:1.缓存雪崩。2.缓存预热。3.缓存穿透。4.缓存降级。5.缓存击穿,以 及对应Redis缓存异常问题解决方案。 1.缓存雪崩 1.1、什么是缓存雪崩 如果缓存集中在一段时间内失效,发生大量的缓存穿透,所有…

zabbix6入门到精通(3) 预处理

zabbix6入门到精通(3) 预处理 配置 — 主机 文件系统主项目 vfs.fs.get 测试一下 添加预处理 $[?(.fsname ‘/’)] $[0].inodes.pfree JSONPath参照: https://www.zabbix.com/documentation/6.0/zh/manual/config/items/preprocessi…

【Docker】进阶之路:(十三)Docker Swarm

目录 Docker Swarm架构与概念 Docker Swarm架构 Docker Swarm 相关概念 1.Swarm 2.Node Docker Swarm是Docker官方提供的集群管理工具,它的主要作用是将Docker主机池转变为单个虚拟Docker主机,把若干台Docker主机抽象为一个整体,并且通过…

django实现增删改查分页接口

django实现增删改查分页接口(小白必备) 在上篇文章中我使用nodejs实现了增删改查分页接口,这一篇我们则使用django实现。 1.创建一个django项目,命令如下 python manage.py startapp myapp 2.在你自己的myapp文件夹中的models.py中定义你们自己的模型 f…

java导出word使用模版与自定义联合出击解决复杂表格!

1. 看一下需要导出什么样子的表格 如图所示,这里的所有数据行都是动态的,需要根据查询出来的数据循环展示。 如果只是这样的话,使用freemarker应该都可以搞定,但是他一列中内容相同的单元格,需要合并。 这对于表格样式…

翻译: LLM大语言模型图像生成原理Image generation

文本生成是许多用户正在使用的,也是所有生成式人工智能工具中影响最大的。但生成式人工智能的一部分兴奋点也在于图像生成。目前也开始出现一些可以生成文本或图像的模型,这些有时被称为多模态模型,因为它们可以在多种模式中操作,…

配置android sudio出现的错误

导入demo工程,配置过程参考: AndroidStudio导入项目的正确方式,修改gradle配置 错误:Namespace not specified. Specify a namespace in the module’s build file. 并定位在下图位置: 原因:Android 大括号…

优雅玩转实验室服务器(二)传输文件

使用服务器最重要的肯定是传输文件了,我们不仅需要本地的一些资源上传到服务器,好进行实验,也需要将服务器计算得到的实验结果传输到本地,来进行预览或者报告撰写。 首先,由于涉及到服务器操作,我强烈推荐…

等保2.0的变化

1法律地位得到确认 《中华人民共和国网络安全法》第21条规定“国家实行网络安全等级保护制度”,要求“网络运营者应当按照网络安全等级保护制度要求,履行安全保护义务”;第31条规定“对于国家关键信息基础设施,在网络安全等级保护…