Python采集商品数据信息,看看一般怎样销量会多

news2024/11/17 5:45:00

前言

嗨喽,大家好呀~这里是爱看美女的茜茜呐

环境使用:

  • python 3.8 >>>>>> 运行代码

  • pycharm 2022.3 >>>>>> 辅助敲代码

模块使用:

  • selenium >>> pip install selenium==3.141.0 指定版本安装

    <模拟人的行为去操作浏览器 自动化操作浏览器>

  • 谷歌浏览器

  • 谷歌驱动 和浏览器版本相对应

  • csv 文件格式

安装方法:

win + R 输入cmd 输入安装命令 pip install 模块名

(如果你觉得安装速度比较慢, 你可以切换国内镜像源)


👇 👇 👇 更多精彩机密、教程,尽在下方,赶紧点击了解吧~

素材、视频教程、完整代码、插件安装教程我都准备好了,直接在文末名片自取就可


selenium --> 自动化测试模块

模拟人的行为去操作浏览器

正常访问网站:

  1. 打开浏览器

  2. 访问网站

  3. 输入商品名字

  4. 自动登陆账号密码

  5. 浏览商品数据 --> 获取商品数据

代码展示

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from cfg import account, password
# 导入csv文件
import csv

# 创建文件
f = open('data.csv', mode='w', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=[
    '标题',
    '价格',
    '销量',
    '城市',
    '店名',
    '详情页',
])
csv_writer.writeheader()
# 1. 打开浏览器
driver = webdriver.Chrome()
# 绕过selenium检测
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument",
                       {"source": """Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"""})
# 2. 访问淘宝网站
driver.get('https://*****/')
"""
3. 输入商品名字 --> 人: 肉眼观察 找到输入框, 输入内容, 回车
    代码: 通过网页元素定位输入框
    元素定位: css选择器 / xpath节点
"""
# 通过 CSS 选择器查找元素
driver.find_element_by_css_selector('#q').send_keys('粽子')
driver.find_element_by_css_selector('#q').send_keys(Keys.ENTER)
"""
4. 自动登陆账号密码
    输入账号密码之后, 点击登陆, 出现验证码, 手动过验证码,验证失败 <被检测到你在使用selenium>
"""
# 输入账号
driver.find_element_by_css_selector('#fm-login-id').send_keys(account)
# 输入密码
driver.find_element_by_css_selector('#fm-login-password').send_keys(password)
# 点击登陆按钮
driver.find_element_by_css_selector('.password-login').click()
"""
5. 获取商品数据
    没有报错bug, 怎么解决?
        - 没取到值
            selenium通过元素定位
            1. 解析语法有问题 <>
            2. 元素是否加载 <√>
"""
# 设置延时, 让数据加载完成之后,再解析数据
driver.implicitly_wait(10)
# 获取所有div标签内容 --> 返回列表
divs = driver.find_elements_by_css_selector('.Content--contentInner--QVTcU0M .Card--doubleCardWrapper--L2XFE73')
if len(divs) > 1:
    for div in divs:
        title = div.find_element_by_css_selector('.Title--title--jCOPvpf span').text
        Price = div.find_element_by_css_selector('.Price--priceInt--ZlsSi_M').text
        # div.find_element_by_class_name('Price--priceInt--ZlsSi_M')
        # . 定位class类
        sales = div.find_element_by_css_selector('.Price--realSales--FhTZc7U').text
        ShopInfo = div.find_element_by_css_selector('.ShopInfo--shopName--rg6mGmy').text
        """
        1. css定位元素 <√>
        2. 列表推导式 
        3. join 列表合并成字符串
        """
        city = ''.join([i.text for i in div.find_elements_by_css_selector('.Price--procity--_7Vt3mX')])
        href = div.get_attribute('href')
        # 创建一个字典
        dit = {
            '标题': title,
            '价格': Price,
            '销量': sales,
            '城市': city,
            '店名': ShopInfo,
            '详情页': href,
        }
        csv_writer.writerow(dit)
        print(title, Price, sales, city, ShopInfo, href)
else:
    divs = driver.find_elements_by_css_selector('.grid .items .item')
    for div in divs:
        title = div.find_element_by_css_selector('.title a').text
        Price = div.find_element_by_css_selector('.price strong').text
        # div.find_element_by_class_name('Price--priceInt--ZlsSi_M')
        # . 定位class类
        sales = div.find_element_by_css_selector('.deal-cnt').text
        ShopInfo = div.find_elements_by_css_selector('.shopname span')[-1].text
        """
        1. css定位元素 <√>
        2. 列表推导式 
        3. join 列表合并成字符串
        """
        city = div.find_element_by_css_selector('.location').text
        href = div.find_element_by_css_selector('.title a').get_attribute('href')
        dit = {
            '标题': title,
            '价格': Price,
            '销量': sales,
            '城市': city,
            '店名': ShopInfo,
            '详情页': href,
        }
        csv_writer.writerow(dit)
        print(title, Price, sales, city, ShopInfo, href)

尾语

感谢你观看我的文章呐~本次航班到这里就结束啦 🛬

希望本篇文章有对你带来帮助 🎉,有学习到一点知识~

躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。

最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《论文阅读07》Segment Anything in 3D with NeRFs

一、论文 研究领域&#xff1a;图像分割(3D)论文&#xff1a;Segment Anything in 3D with NeRFsSubmitted on 24 Apr 2023 (v1), last revised 1 Jun 2023 (this version, v3)Computer Vision and Pattern Recognition (cs.CV)nvos数据集论文链接 二、论文概要 三、全文翻译 …

通用vs垂直?热门AI大模型你更看好哪个?(附免费资源)

自ChatGPT发布以来&#xff0c;通用大模型就仿佛坐了火箭&#xff0c;短短几个月的时间&#xff0c;各大企业便争相发布自己的大模型&#xff0c;这其实也反应了目前人工智能发展的方向。 不过从长远来看&#xff0c;垂直领域大模型的发展会比通用大模型更具势头&#xff0c;一…

Java线程面试题

0. Java线程面试题 0.1 线程占用的内存 JDK1.4默认单个线程占用256KJDK1.5默认单个线程占用1M可以通过-Xss参数设定 0.2 为什么要使用线程池 手动创建线程池的缺点 不受风险控制&#xff1a;服务器CPU资源有限&#xff0c;如果每个人都显示手动创建线程&#xff0c;不知道哪…

Office远程代码执行漏洞(CVE-2017-11882)漏洞复现

Office远程代码执行漏洞&#xff08;CVE-2017-11882&#xff09;漏洞复现 1.漏洞原理2.在Kali平台查看漏洞利用文件3.登录目标靶机&#xff0c;打开FTP服务器4.登录Kali&#xff0c;利用FTP服务器上传payload-cale.doc文件5.登录目标靶机&#xff0c;触发doc文件&#xff0c;验…

虚函数,抽象基类

编译器处理虚函数的方法&#xff1a; 给每个对象添加一个隐藏成员&#xff0c;隐藏成员保存了一个指向函数地址的数组指针&#xff0c;数组被称为虚函数表&#xff0c;虚函数表存储了为类对象声明的虚函数的地址&#xff0c;比如基类包含一个指针&#xff0c;该指针指向基类中…

阿里巴巴变革,盒马“一马当先”

配图来自canva可画 随着数字经济成为当前经济社会发展的“新宠”&#xff0c;诸多数字企业也开始走上了发展的快车道。而作为国内互联网大厂的阿里巴巴集团&#xff0c;为了打造数字经济时代的商业、金融、物流、云计算和大数据等新一代商业基础设施&#xff0c;就于前不久启动…

Javawed第一章:Web前端的入门理论

目录 前言 一.wed &#x1f496;wed是什么&#xff1f; &#x1f496; wed的分类 二.HTML 和 CSS &#x1f496;HTML的介绍 HTML的标签 &#x1f496;CSS的介绍 常用基本标签 &#x1f496;实践 HTML结构标签特点 三.JavaScript &#x1f496;JavaScript的介绍 &…

SOLIDWORKS仿真数据清扫工具

我们来聊下SOLIDWORKS仿真数据清扫工具。与 SOLIDWORKS 软件一起安装的一个鲜为人知的工具是 Simulation Cleaning Utility。该实用工具可用于在 SOLIDWORKS 零件或装配文件中永远删除任何仿真数据&#xff0c;包括仿真设置和后处理信息。 SOLIDWORKS仿真数据清扫工具工具可以…

阻塞队列(消息队列)

1、阻塞队列 队列是一种先进先出的数据结构。而阻塞队列也是一种特殊的队列&#xff0c;也遵守”先进先出“的原则。 阻塞队列是一种线程安全的的数据结构&#xff0c;并且具有以下特性&#xff1a; 1、队列往进写元素是从队尾插入&#xff0c;队首取出 2、当插入元素的时候…

Python面向对象编程基础知识和示例代码

文章目录 对象&#xff08;Object&#xff09;示例代码一 类的成员方法&#xff08;Method&#xff09;示例代码二 类和对象&#xff08;Class and Object&#xff09;&#xff1a;示例代码三 构造方法&#xff08;Constructor&#xff09;&#xff1a;示例代码四 魔术方法&…

JUC简介

1、JUC介绍 JUC (java.util.concurrent)是在并发编程中使用的工具类&#xff0c;主要包括以下三个 &#xff08;1&#xff09;java.util.concurrent &#xff08;2&#xff09;java.util.concurrent.atomic 原子性&#xff1a;不可分割。Int i0; i, &#xff08;3&#xff09;…

MySQL——函数与约束的讲解

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​ 前言 本章将会讲解MySQL数据库的函数与约束的讲解。 一.函数 函数 是指一段可以直接被另一…

渗透测试面试题汇总

2023年快过去一半了&#xff0c;不知道小伙伴们有没有找到自己心仪的工作呀【doge】&#xff0c;本文总结了常见的安全岗位面试题&#xff0c;方便各位复习。祝各位事业顺利&#xff0c;财运亨通。在网络安全的道路上越走越远&#xff01; 所有的资料都整理成了PDF&#xff0c…

DCN v1阅读笔记

DCN v1即 Deformable Convolutional Networks。 视觉识别&#xff08;例如对象检测和语义分割&#xff09;中的一个关键挑战是如何适应物体尺度、姿态、视角和零件变形中的几何变化或模型几何变换。卷积神经网络&#xff08;CNN&#xff09;构建模块中为固定几何结构&#xff1…

神经网络基础

文章目录 一、神经网络基础1.得分函数 f(xi;W,b)1&#xff09;从输入到输出的映射2&#xff09;数学表示3&#xff09;计算方法4&#xff09;多组权重参数构成了决策边界 2.损失函数 L3.前向传播4.Softmax分类器 梯度下降2.反向传播 一、神经网络基础 回归任务&#xff1a;最终…

软件测试技能,JMeter压力测试教程,JDBC配置连接mysql数据库(十)

前言 使用jmeter压测接口的时候&#xff0c;有时候需要批量造数据&#xff0c;需使用jmeter连数据库造对应的测试数据 或者测试结束后&#xff0c;对测试的数据还原&#xff0c;删掉一些垃圾数据&#xff0c;都会用到连接数据库执行sql的操作 一、JDBC 连接配置 添加配置元…

7-WebApis-2

Web APIs - 2 掌握事件绑定处理和事件对象&#xff0c;完成常见网页交互 事件监听事件类型事件对象拓展知识综合案例 事件监听 以前写的代码都是自动执行的&#xff0c;我们希望一段代码在某个特定的时机才去执行&#xff0c;比如 点击按钮可以弹出警示框比如鼠标经过显示下拉…

通过easyui的filebox上传文件

本篇文章重点分享一下怎么通过easyui的filebox实现文件上传的功能&#xff0c;从前端代码到后端接口都会展示给大家。 1、form表单同步上传 传统的文件上传会把<input type"file" />放到一个<form></form>里&#xff0c;设置form表单的提交方式为…

开源代码分享(5)—配电网重构的启发式算法(附matlab代码)

来源于文献IEEE TRANSACTIONS ON POWER SYSTEMS期刊文献的开源代码。 摘要&#xff1a;本文提出了一种两阶段的启发式计算方法&#xff0c;可以在最小的计算时间内重新配置一个径向分布网络。所有的网络交换机在操作的初始阶段都是关闭的&#xff0c;并提出了一个顺序的开关开闸…

基于SSM+jsp的教学质量评价系统设计与实现

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…