电商数据集成之电商商品信息采集系统架构设计||电商API接口
一、引言
本架构设计文档旨在阐述基于 Selenium 的电商商品信息采集系统的整体架构,包括系统视图、逻辑视图、物理视图、开发视图和进程视图,并提供一个简单的采集电商商品信息的 demo。该系统通过模拟浏览器行为,实现对电商商品信息的自动化抓取,为数据分析、市场研究等提供数据支持。
京东获得JD商品详情 API 返回值说明
item_get-获得JD商品详情
jd.item_get
公共参数
名称 | 类型 | 必须 | 描述 |
---|---|---|---|
key | String | 是 | 调用key(必须以GET方式拼接在URL中) |
secret | String | 是 | 调用密钥 |
api_name | String | 是 | API接口名称(包括在请求地址中)[item_search,item_get,item_search_shop等] |
cache | String | 否 | [yes,no]默认yes,将调用缓存的数据,速度比较快 |
result_type | String | 否 | [json,jsonu,xml,serialize,var_export]返回数据格式,默认为json,jsonu输出的内容中文可以直接阅读 |
lang | String | 否 | [cn,en,ru]翻译语言,默认cn简体中文 |
version | String | 否 | API版本 |
请求参数
请求参数:num_iid=10335871600
参数说明:num_iid:JD商品ID
响应参数
Version: Date:
名称 | 类型 | 必须 | 示例值 | 描述 |
---|---|---|---|---|
item | item[] | 0 | 获得JD商品详情 |
二、系统视图
系统视图描述了系统的整体结构和功能模块。本采集系统主要包括以下几个模块:
(1)多终端接入
支持微信小程序、Android、IOS、PC 网页任意一个入口。
(2)用户界面模块
负责与用户进行交互,提供采集任务配置、启动、停止等操作界面。
(3)爬虫管理模块
负责调度和管理爬虫任务,包括任务队列、任务状态监控等。
(4)数据解析模块
负责对采集到的网页数据进行解析,提取商品信息。
(5)数据存储模块
负责将解析后的商品信息存储到数据库或文件中。
(6)代理管理模块
负责代理服务器的获取、验证和管理。
为爬虫任务提供可用的代理 IP,确保 IP 高可用。
监控代理服务器的状态,及时剔除不可用的代理。
三、逻辑视图
逻辑视图展示了系统内部的功能划分和模块间的交互关系,从用户视角描述系统有什么功能。本采集系统的逻辑视图如下:
(1)用户通过用户界面模块配置采集任务,包括目标 URL、采集深度、抓取字段等。
(2)用户界面模块将配置信息传递给爬虫管理模块,爬虫管理模块根据配置信息创建爬虫任务,并将其加入任务队列。
(3)爬虫管理模块调度 Selenium 驱动浏览器进行网页加载和渲染,模拟用户操作进行页面滚动、点击等。
(4)Selenium 将加载完成的页面数据返回给爬虫管理模块,爬虫管理模块将页面数据传递给数据解析模块。
(5)数据解析模块使用正则表达式或 XPath 等方法对页面数据进行解析,提取出商品信息。
(6)提取的商品信息被传递给数据存储模块,数据存储模块将其存储到数据库或文件中。
(7)代理池构建
代理管理模块首先会从各种来源(如免费代理网站、付费代理服务)获取代理 IP。
对获取的代理 IP 进行验证,确保其可用性和匿名性。
将验证通过的代理 IP 存入代理池,供爬虫任务使用。
(8)代理调度
当爬虫任务启动时,代理管理模块会从代理池中选取一个可用的代理 IP。
将选取的代理 IP 配置到 Selenium WebDriver中,确保爬虫任务通过该代理进行网页请求。
监控代理 IP 的使用情况,如请求次数、响应时间等,以便及时更换。
(9)代理维护
定期对代理池中的代理 IP 进行验证,剔除不可用的代理。
根据代理 IP 的使用情况,动态调整代理池的权重,优先使用性能更好的代理。
当代理池中的可用代理数量低于阈值时,自动从来源处获取新的代理 IP 进行补充。
四、物理视图
物理视图描述了系统在实际环境中的部署情况,包括硬件、网络、软件等资源的配置。本采集系统的物理视图如下:
采用微服务架构,分布式部署,每个服务都实现容器化,整个微服务集群部署在 K8S 集群上,可以扩展支持多云部署。
五、开发视图
开发视图展示了系统的代码结构和开发过程中的模块划分。本采集系统的开发视图如下:
整体采用微服务架构,容器化部署。
系统采用多语言开发,包括 Java、Python 语言进行开发,利用 Selenium 库模拟浏览器行为,进行网页数据的抓取。
系统代码分为多个模块和函数,每个模块和函数负责特定的功能,实现代码的高内聚和低耦合。
代码使用版本控制工具(如Git)进行管理,确保代码的可追溯性和可维护性。
六、进程视图
系统启动后,主进程负责初始化系统环境和加载配置信息。
根据配置信息,主进程创建爬虫任务,并启动子进程执行爬虫任务。
每个爬虫任务对应一个子进程,子进程使用 Selenium 驱动浏览器进行网页加载和渲染,模拟用户操作进行页面抓取。
子进程将抓取到的页面数据传递给主进程进行解析和存储。
主进程负责监控子进程的运行状态,确保任务的正常执行。
七、Demo 示例
下面是一个简单的基于 Selenium 的电商商品信息采集 demo,用于演示系统的基本功能。
from selenium import webdriver |
代码运行后:
我们成功获取到了需要提取的内容:
title 跨境热销水波纹投影灯动态北极光卧室星空梦幻音乐户外露 price ¥60.00~¥130.00 volume 80+ |
我们可以查看一下待爬取的网页:
相关文章:
电商数据集成之电商商品信息采集系统架构设计||电商API接口
一、引言 本架构设计文档旨在阐述基于 Selenium 的电商商品信息采集系统的整体架构,包括系统视图、逻辑视图、物理视图、开发视图和进程视图,并提供一个简单的采集电商商品信息的 demo。该系统通过模拟浏览器行为,实现对电商商品信息的自…...
Spring Cloud Stream 实现统一消息通信平台
1. 概述 Spring Cloud Stream:是Spring提供的消息通信框架,旨在构建跨不同消息中间件的统一通信平台。目的:通过消息通信机制降低分布式系统中服务间的耦合度,实现异步服务交互。 2. 消息通信与RPC RPC:远程过程调用…...
uniapp安卓plus原生选择系统文件
uniapp安卓plus原生选择系统文件 效果: 组件代码: <template xlang"wxml" minapp"mpvue"><view></view> </template> <script>export default {name: file-manager,props: {},data() {return {is…...
Go语言 Import导入
本文主要介绍Go语言import导入使用时注意事项和功能实现示例。 目录 Import 创建功能文件夹 加法 减法 主函数 优化导入的包名 .引入方法 总结 Import 创建功能文件夹 做一个计算器来演示,首先创建test文件夹。 加法 在test文件夹中创建add文件夹ÿ…...
一款异次元小清新风格的响应式wordpress个人博客主题
一款异次元小清新风格的响应式个人博客主题。这是一款专注于用户阅读体验的响应式 WordPress 主题,整体布局简洁大方,针对资源加载进行了优化。 Kratos主题基于Bootstrap和Font Awesome的WordPress一个干净,简单且响应迅速的博客主题&#x…...
【cocos creator】ts中export的模块管理
在 TypeScript(TS)中,export 和 import 的概念与 Java 中的 public 类、接口以及 import 语句有一些相似之处。可以用以下方式来类比理解: Export 在 TypeScript 中,export 用于将模块中的变量、函数、类等暴露给外部…...
QT JSON使用实例
下面是一个使用Qt框架的示例代码,展示如何获取仪器的状态,将其打包成JSON格式,保存到当前目录下的JSON文件中,然后通过FTP发送该文件。 1. 准备工作 确保你已经安装了Qt,并创建一个新的Qt Console项目或Qt Widgets项目…...
浅聊 Three.js 屏幕空间反射SSR-SSRShader
浅聊 Three.js 屏幕空间反射SSR(2)-SSRShader 前置基础 渲染管线中的相机和屏幕示意图 -Z (相机朝向的方向)||| -------------- <- 屏幕/投影平面| | || | || | (f) | <- 焦距| | ||…...
Windows图形界面(GUI)-DLG-C/C++ - 月历控件(MonthCalendar)
公开视频 -> 链接点击跳转公开课程博客首页 -> e链接点击跳转博客主页 目录 月历控件(MonthCalendar) 使用场景 控件操作 月历控件(MonthCalendar) 使用场景 日程安排:用户可以通过月历控件选择特定的日期来安排会议或活动。事件管理&#x…...
【Langchain大语言模型开发教程】基于文档问答
🔗 LangChain for LLM Application Development - DeepLearning.AI Embedding: https://huggingface.co/BAAI/bge-large-en-v1.5/tree/main 学习目标 1、Embedding and Vector Store 2、RetrievalQA 引包、加载环境变量 import osfrom dotenv import…...
大厂面试-基本功
大厂面试第4季 服务可用性多少个9是什么意思遍历集合add或remove操作bughashcode冲突案例BigdecimalList去重复IDEA Debugger测试框架ThreaLocal父子线程数据同步 InheritableThreadLocal完美解决线程数据同步方案 TransmittableThreadLocal 服务可用性多少个9是什么意思 遍历集…...
RV1103使用rtsp和opencv推流视频到网页端
参考: Luckfox-Pico/Luckfox-Pico-RV1103/Luckfox-Pico-pinout/CSI-Camera Luckfox-Pico/RKMPI-example Luckfox-Pico/RKMPI-example 下载源码 其中源码位置:https://github.com/luckfox-eng29/luckfox_pico_rtsp_opencv 使用git clone由于项目比较大&am…...
与Bug较量:Codigger之软件项目体检Software Project HealthCheck来帮忙
在软件工程师的世界里,与 Java 小程序中的 Bug 作战是一场永不停歇的战役。每一个隐藏在代码深处的 Bug 都像是一个狡猾的敌人,时刻准备着给我们的项目带来麻烦。 最近,我就陷入了这样一场与 Java 小程序 Bug 的激烈较量中。这个小程序原本应…...
Git --- Branch Diverged
Git --- Branch Diverged Branch Diverged是如何形成的如何解决RebaseMerge Branch Diverged是如何形成的 尝试提交并将更改推送到 master 分支时,是否看到这条烦人的消息 原因是: 直到更改 B 之前,我的分支和“origin/master”完全相同。从…...
go标准库---net/http服务端
1、http简单使用 go的http标准库非常强大,调用了两个函数就能够实现一个简单的http服务: func HandleFunc(pattern string, handler func(ResponseWriter, *Request)) func ListenAndServe(addr string, handler Handler) error handleFunc注册一个路…...
Linux文件和目录常用命令
1.操作命令 查看目录内容 ls 切换目录 cd 创建和删除操作 touch rm mkdir 拷贝和移动文件 cp mv 查看文件内容 cat more grep 其他 echo 重定向 > 和 >> 管道 | 1.1 终端实用技巧 1>自动补全 在敲出 文件/目录/命令 的前几个字母之后,按下…...
【C++刷题】优选算法——链表
链表常用技巧和操作总结 常用技巧 画图 引入虚拟头节点 不要吝啬空间,大胆定义变量 快慢双指针常用操作 创建一个新节点 尾插 头插 两数相加 ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {int carry 0;ListNode* newHead new ListNode, *cur newHea…...
Flex和Bison
Flex和Bison是Linux和Unix环境下两个非常强大的工具,分别用于生成词法分析器和语法分析器。它们在编译器设计、文本处理等领域有着广泛的应用。下面我将详细介绍Flex和Bison的基本概念、功能、用法以及它们之间的关系。 一、Flex 1. 基本概念 Flex(其…...
Matlab-FPGA 小数转换为定点二进制小数脚本和转coe文件格式脚本
Matlab-FPGA 小数转换为定点二进制小数脚本: % 更新于2023年6月17日,修改旋转因子文件,不修改fpga %首先明确我们的二维FFT的数组维数,此为1024*8的二维矩阵,1024行,8列 column 1024; row 8; nk[]; Ncolumn*row; fo…...
逆向案例二十三——请求头参数加密,某区块链交易逆向
网址:aHR0cHM6Ly93d3cub2tsaW5rLmNvbS96aC1oYW5zL2J0Yy90eC1saXN0L3BhZ2UvNAo 抓包分析,发现请求头有X-Apikey参数加密,其他表单和返回内容没有加密。 直接搜索关键字,X-Apikey,找到疑似加密位置,注意这里…...
CSS 导航栏:设计、定制与优化
CSS 导航栏:设计、定制与优化 CSS(层叠样式表)是网页设计中不可或缺的一部分,它允许开发者通过定义样式来控制网页的布局和外观。在网页设计中,导航栏是一个关键元素,它帮助用户浏览网站并找到他们感兴趣的…...
JS 如何处理链接被用户点击中键的操作
今天在开发中遇到一个问题,在使用类似Bootstrap中的Tabs组件时,当在tab导航链接点击中键时会打开一个新的窗口访问链接,于是我尝试在别的普通链接上点击中键时也会如此,我猜测这是浏览器的默认行为。 由于我开发的是一个浏览器在…...
Android 11 使用HAL层的ffmpeg库(1)
1.frameworks/av/media目录下面的修改 From edd6f1374c1f15783d9920ebda22ea915e503775 Mon Sep 17 00:00:00 2001 From: GW00219471 <zhumingxingnoboauto.com> Date: Wed, 17 Jan 2024 15:16:10 0800 Subject: [PATCH] ?UTF-8?q?[V35CUX-4542]:E7A7BBE6A48Dcux20E8…...
友力科技数据中心搬迁方案
将当前运行机房中的所有设备、应用系统安全搬迁至新数据中心机房,实现平滑切换、平稳过渡,最大限度地降低搬迁工作对业务的影响。 为了确保企事业单位能够顺利完成数据中心机房搬迁工作,我们根据实际经验提供了4个基本原则,希望能…...
GitHub敏感信息扫描工具
目录 功能设计 技术实现 程序使用 文件配置 下载地址 功能设计 GitPrey是根据企业关键词进行项目检索以及相应敏感文件和敏感文件内容扫描的工具,其设计思路如下: 根据关键词在GitHub中进行全局代码内容和路径的搜索(in:file,path),将项目结果做项目信息去重整理得到…...
Linux云计算 |【第一阶段】ENGINEER-DAY4
主要内容: 配置Linux网络参数、配置静态主机名、查看/修改/激活/禁用网络连接、指定DNS、虚拟网络连接、虚拟机克隆、SSH客户端、SCP远程复制、SSH无密码验证(SERVICE-DAY5)、虚拟网络类型 一、网络参数配置 修改网卡配置文件主要是需要配置…...
C++与VLC制作独属于你的动态壁纸背景
文章目录 前言效果展示为什么要做他如何实现他实现步骤获取桌面句柄代码获取桌面句柄libvlc_media_player_set_hwnd函数 动态壁纸代码 总结 前言 在当今的数字世界中,个性化和自定义化的体验越来越受到人们的欢迎。动态壁纸是其中一种很受欢迎的方式,它…...
平凯星辰黄东旭出席 2024 全球数字经济大会 · 开放原子开源数据库生态论坛
7 月 5 日,以“开源生态筑基础,数字经济铸未来”为主题的 2024 全球数字经济大会——开放原子开源数据库生态论坛在北京成功举办。平凯星辰(北京)科技有限公司联合创始人黄东旭发表了题为《TiDB 助力金融行业关键业务系统实践》的…...
Mac OS 下安装 NVM,1秒教会你
1.下载 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash或者wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash 2.安装成功后执行 nvm 提示 command not found 首先查看 ~/.bash_profile 文件是否存在&…...
搭建博客系统#Golang
WANLI 博客系统 项目介绍 基于vue3和gin框架开发的前后端分离个人博客系统,包含md格式的文本编辑展示,点赞评论收藏,新闻热点,匿名聊天室,文章搜索等功能。 点击跳转:Github 项目开源地址 功能展示 B 站…...
诚通凯胜生态建设有限公司网站/淘宝seo排名优化
1. DIVCSS的叫法不够严谨 我们以前做页面布局的时候大多是用Table,很多人称之为“TableCSS”,而现在比较流行的是DIV布局,所以称之为“DIVCSS”。听起来是挺合理的,岂不知这种叫法误导了绝大部分的网页开发者, 认为这样…...
网站备案主体授权书/东莞seo计费管理
被称为开眼看世界的林则徐,在自己的书房中写了这样一副对联,以做自勉:海纳百川,有容乃大,壁立千仞,无欲则刚。包容的胸怀是我们做成很多事情的根基,也是一项产业战略、科技事业发展的关键。近几…...
中山外贸网站建设/南京谷歌优化
两个场景解析何为资源端的SOA化 除了前面谈过的业务端的SOA化或者说标准化,还需要在资源端进行相关的工作。 何为资源,我们可以把资源视为所有能够支撑组织完成特定目标的有形、无形 的因素的集合。具体的讲,资源可以包括人、硬件、网络、…...
网站后台维护一般要怎么做/app推广方案怎么写
本文翻译自:Rename column SQL Server 2008I am using SQL Server 2008 and Navicat. 我正在使用SQL Server 2008和Navicat。 I need to rename a column in a table using SQL. 我需要使用SQL重命名表中的列。 ALTER TABLE table_name RENAME COLUMN old_name to…...
个人网站建设价格表/手游cpa推广平台
刚进入公司的时候就有遇到过多规格的问题,当时就觉得很麻烦,就只是看了下,没有尝试,最近在写微信小程序的时候,又遇到了多规格问题,就自己尝试了下,在这里记录下1.效果图 2.文件及部分思路 inde…...
运河建设管理网站/互联网销售公司
题目:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注…...