实战4、爬取淘宝商品数据-selenium模拟

news/2024/12/22 9:07:31/

1、登录

  • 在页面中找到登录按键,使用selenium模拟点击
python">button_login = wd.find_element(By.XPATH,"//li[@id='J_SiteNavMytaobao']/div[@class='site-nav-menu-hd']/a[@target='_top']")button_login.click()

访问并寻找登录按钮

  • 找到用户名密码所在位置模拟输入
python"># 模拟输入账密button_username = wd.find_element(By.XPATH, "//div[@class='input-plain-wrap input-wrap-loginid ']/input")button_username.send_keys(zhangmi.username) # 替换为自己的用户名button_password = wd.find_element(By.XPATH, "//div[@class='input-plain-wrap input-wrap-password']/input")button_password.send_keys(zhangmi.password)# 替换为自己的密码

找到输入用户名密码的位置

  • 滑动进行验证,使用selenium模拟鼠标容易失败,所以我们在这里多等待一段时间手动滑动验证

滑动验证

2、搜索并找到数据

  • 找到搜索框输入所需要的物品,这里我们使用input动态输入

搜索按钮

  • 通过使用开发者工具找到商品所在位置,发现为由a标签组成
python"># 获取所有a标签
info = wd.find_elements(By.XPATH, "//div[@class='content--CUnfXXxv']/div/a")

商品链接

3、解析数据

  • 使用css选择器获取返回a标签包含的内容
python"># 商品标题messages_title = message.find_element(By.CSS_SELECTOR, ".title--F6pvp_RZ ").text# 商品特点messages_features = []messages_feature = message.find_elements(By.CSS_SELECTOR, ".text--eAiSCa_r")for k in messages_feature:messages_features.append(k.text)# 商品发货地messages_places = []messages_place = message.find_elements(By.CSS_SELECTOR, ".procity--QyzqB59i")for a in messages_place:messages_places.append(a.text)# 商品链接messages_url = message.get_attribute("href")# 商家信息messages_shop = message.find_element(By.CSS_SELECTOR, ".shopNameText--APRH8pWb").text

4、整理并储存数据

python">info = {"标题": messages_title,"特点": messages_features,"链接": messages_url,"商家信息": messages_shop,"商品发货地": messages_places}with open("./files/淘宝商品数据.txt", "a", encoding="utf-8") as f:f.write(str(info) + "\n")

相关代码链接:https://gitee.com/justinc666/crawler/blob/master/实战/4、爬取淘宝商品.py


http://www.ppmy.cn/news/1534324.html

相关文章

正向代理与反向代理:原理、区别以及应用(Nginx 和 Tomcat)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言1. 实现原理正向代理工作流程: 反向代理工作流程: 区别 2. 使用案例Nginx作为正向代理Nginx作为反向代理Tomcat作为反向代理 3. 适用场景…

C#绘制动态曲线

前言 用于实时显示数据动态曲线,比如:SOC。 //用于绘制动态曲线,可置于定时函数中,定时更新数据曲线 void DrawSocGraph() {double f (double)MainForm.readData[12]; //display datachart1.Series[0].Points.Add(f);if (ch…

影视cms泛目录用什么程序?苹果cms二次开发泛目录插件

影视CMS泛目录一般使用的程序有很多种,(maccmscn)以下是其中几种常见的程序: WordPress:WordPress是一个非常流行的开源内容管理系统,可以通过安装一些插件来实现影视CMS泛目录功能。其中,一款常…

高性能防静电主轴4033 AC-ESD 在线路板切割中的非凡表现

随着电子产品的日益小型化/集成化,线路板的制造也面临着更高的挑战。线路板分板作为电子制造流程中的关键环节,其效率和精度直接影响到最终产品的质量和市场竞争力。因此专用的高性能防静电主轴SycoTec 4033 AC-ESD凭借其卓越的性能,成为众多…

python 人工智能 机器学习 当损失函数的数值变成 `nan` 时,这通常意味着在模型训练过程中出现了数值不稳定性以及解决办法,数据分析

当损失函数的数值变成 nan 时,这通常意味着在模型训练过程中出现了数值不稳定性。以下是一些可能导致这个问题的原因以及相应的解决方法: 1. **学习率过高**:如果学习率设置得过高,可能会导致梯度爆炸,从而导致损失函…

uniapp学习(003-1 vue3学习 Part.1)

零基础入门uniapp Vue3组合式API版本到咸虾米壁纸项目实战,开发打包微信小程序、抖音小程序、H5、安卓APP客户端等 总时长 23:40:00 共116P 此文章包含第11p-第p14的内容 文章目录 vue3使用介绍插值表达式例子时间戳随机数输出函数的值 ref响应式数据变量v-bind 绑…

解决银河麒麟操作系统中`sudo su`命令切换用户失败的问题

解决银河麒麟操作系统中sudo su命令切换用户失败的问题 1、问题描述2、问题分析3、问题解决办法步骤 1:修改/usr/bin/sudo的权限步骤 2:修改/etc/sudoers的权限 🌼The Begin🌼点点关注,收藏不迷路🌼 在银河…

【C++并发入门】摄像头帧率计算和多线程相机读取(上):并发基础概念和代码实现

前言 高帧率摄像头往往应用在很多opencv项目中,今天就来通过简单计算摄像头帧率,抛出一个单线程读取摄像头会遇到的问题,同时提出一种解决方案,使用多线程对摄像头进行读取。同时本文介绍了线程入门的基础知识,讲解了…