运用selenium爬取京东商品数据储存到MySQL数据库中

使用Selenium爬取京东商品数据并存储到MySQL数据库中的过程可以分为几个步骤:

1. 准备工作

安装所需库

确保你已经安装了Python环境以及以下库:

  • selenium:用于自动化浏览器操作。
  • pymysqlmysql-connector-python:用于连接MySQL数据库。
  • webdriver:如ChromeDriver,对应你的浏览器版本。

可以通过pip安装这些库:

pip install selenium pymysql
下载WebDriver

根据使用的浏览器下载对应的WebDriver,并确保其路径已添加到系统PATH中。

2. 编写代码

连接MySQL数据库

首先,你需要创建一个MySQL数据库以及表结构来存放京东商品数据。下面是一个简单的数据库连接示例:

import pymysql# 数据库连接配置
db_config = {'host': 'localhost','user': 'your_username','password': 'your_password','db': 'your_database','charset': 'utf8mb4'
}def connect_db():return pymysql.connect(**db_config)# 创建表(如果尚未创建)
def create_table():conn = connect_db()cursor = conn.cursor()sql = """CREATE TABLE IF NOT EXISTS jd_goods (id INT AUTO_INCREMENT PRIMARY KEY,product_name VARCHAR(255),price DECIMAL(10, 2),link VARCHAR(255),image_url VARCHAR(255),description TEXT,timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP)"""cursor.execute(sql)conn.commit()cursor.close()conn.close()create_table()
使用Selenium爬取数据

接下来,使用Selenium打开网页,定位到商品信息元素,并提取数据。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
import time
import pymysqldef scrape_jd_goods(keyword):# 初始化Seleniumdriver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))# 访问京东搜索页面url = f'https://www.jd.com/allSort.aspx?keyword={keyword}'driver.get(url)time.sleep(3) # 等待页面加载# 获取商品列表goods_list = driver.find_elements(By.XPATH, '//li[@class="gl-item"]')# 存储数据到数据库for good in goods_list:try:name = good.find_element(By.XPATH, './/div[@class="p-name"]/a/em').textprice = float(good.find_element(By.XPATH, './/div[@class="p-price"]').text.replace('', '').replace('元', '').strip())link = good.find_element(By.XPATH, './/div[@class="p-name"]/a').get_attribute('href')img_url = good.find_element(By.XPATH, './/div[@class="p-img"]/a/img').get_attribute('src')# 插入数据库with connect_db() as conn:cursor = conn.cursor()sql = "INSERT INTO jd_goods (product_name, price, link, image_url) VALUES (%s, %s, %s, %s)"cursor.execute(sql, (name, price, link, img_url))conn.commit()except Exception as e:print(f"Error scraping data: {e}")driver.quit()# 示例:爬取关键词“手机”的商品信息
scrape_jd_goods('手机')

注意事项

  • 实际应用中可能需要处理更复杂的页面结构、分页、反爬虫策略等问题。
  • 上述代码未包含错误处理的完整逻辑,实际应用时应加入异常处理提高健壮性。
  • 频繁请求可能会触发京东的反爬机制,建议设置合理的延时,并遵守网站的爬虫政策。
  • 考虑使用webdriverwait代替time.sleep()以提高效率和稳定性。

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

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

相关文章

在MongoDB中,您可以通过以下步骤来创建账号密码,并限制其在特定数据库上的访问权限

在MongoDB中,您可以通过以下步骤来创建账号密码,并限制其在特定数据库上的访问权限: 连接到MongoDB数据库: 使用MongoDB的客户端(如mongo shell或者MongoDB Compass)连接到MongoDB服务器。 切换到admin数…

【TensorFlow深度学习】池化层的功能与类型详解

池化层的功能与类型详解 池化层的功能与类型:深度学习中的维度缩减与特征抽取艺术概述主要的池化类型结语 池化层的功能与类型:深度学习中的维度缩减与特征抽取艺术 在深度神经网络架构中,池化层(Pooling Layer)是一个…

实验报告 GUI窗体和标签

实验目的: 理解AWT和Swing工具包 掌握窗体和组件的创建方法。 实验要求: (1)掌握创建GUI窗体的操作 (2)掌握标签的使用 (3)代码应遵循Java编程规范,包含恰当的注释…

Kotlin 嵌套类和内部类

文章目录 嵌套类内部类 嵌套类 在类的内部可以定义其他的类,这是类结构上的嵌套(Nested)。 class Container {val name "Container"class NestedClass {fun getter() {// 此时无法访问外部类的成员// name}} }Note:接…

源码分析の前言

源码分析路线图: 初级部分:ArrayList->LinkedList->Vector->HashMap(红黑树数据结构,如何翻转,变色,手写红黑树)->ConcurrentHashMap 中级部分:Spring->Spring MVC->Spring Boot->M…

用Python装饰器打造强大的日志系统

用Python装饰器打造强大的日志系统 日志记录是软件开发中不可或缺的一部分,它帮助开发者追踪程序的执行过程、调试错误和分析性能。Python提供了多种日志记录工具,但如何将日志记录功能优雅地集成到代码中,是一个值得探讨的问题。本文将介绍如…

机器学习中的神经网络重难点!纯干货(下篇)

纯干货 目录 长短时记忆网络 基本原理 一个示例 自注意力模型 基本原理 自注意力机制 具体步骤 一个案例 生成对抗网络 基本原理 一个案例 长短时记忆网络 LSTM就像一个有记忆的人,可以记住重要的信息并且忘记不重要的。 特别擅长处理长序列数据&#…

网上蛋糕售卖店管理系统的设计

管理员账户功能包括:系统首页,个人中心,管理员管理,店员管理,用户管理,商品管理,基础数据管理 前台账户功能包括:系统首页,个人中心,公告信息,商品…

2024医美如何做抖音医美抖音号,本地团购、短视频直播双ip爆品引流,实操落地课

课程下载:https://download.csdn.net/download/m0_66047725/89307619 更多资源下载:关注我。 课程内容: 01-0-序.mp4 02-01-账号定位.mp4 03-02-误区.mp4 04-03-五件套.mp4 05-04-文案怎么来.mp4 06-05-对标怎么弄.mp4 07-06-人设怎…

Go实现阻塞读且并发安全的map

GO里面MAP如何实现key不存在 get操作等待 直到key存在或者超时,保证并发安全,且需要实现以下接口: type sp interface {Out(key string, val interface{}) //存入key /val,如果该key读取的goroutine挂起,则唤醒。此方…

进程与线程(四)

进程与线程(四) 基于System V IPC对象的进程间通信机制SystemV IPC引入查看Linux系统中IPC工具的方式查看所有IPC工具命令:ipcs 查看指定的IPC工具key值获取方法:ftok()函数 消息队列消息队列的特征:消息队列的操作打开…

处理多对一的映射关系

1、级联属性赋值 Emp实体类中设置Dept 属性并生成get、set方法,生成toString方法,但是构造方法不必包含此属性 在EmpMapper.xml文件中: <resultMap id="empAndDeptResultMapOne" type="Emp"><id property="eid" column="eid…

Python知识点5---字符串的使用

提前说一点&#xff1a;如果你是专注于Python开发&#xff0c;那么本系列知识点只是带你入个门再详细的开发点就要去看其他资料了&#xff0c;而如果你和作者一样只是操作其他技术的Python API那就足够了。 Python的字符串在使用上和其他语言的差别不大&#xff0c;常规操作都…

AndroidStudio使用高德地图API获取手机定位

一、高德地图API申请 首先去高德注册开发者账号 下面这两个选项&#xff0c;也是我们项目成功的关键 1.1怎么获取SHA1指纹密码 ①使用AS自带的签名文件 你的用户文件下面会有一个.android文件夹,进入文件夹,在这个路径下打开cmd 如果.android下面没有签名文件参考创建文章 …

挂载SMB和NFS共享目录

挂载SMB共享目录//192.168.3.191/OMV&#xff1a; ubuntu需要安装cifs工具&#xff1a; sudo apt install cifs-utils sudo mount.cifs //192.168.3.191/OMV /mnt -o usersamba,passsamba “samba”用户需要是一个samba用户&#xff0c;并且有访问OMV目录的权限。 挂载NFS共…

fastjson TypeReference 泛型类型(详解)

系列文章目录 附属文件一&#xff1a;fastjson 泛型转换问题&#xff08;详解&#xff09; 文章目录 系列文章目录一、简介二、构造方法1. 无参构造方法2. 有参构造方法 一、简介 com.alibaba.fastjson.TypeReference 即类型引用&#xff0c;用于指定我们使用 com.alibaba.fa…

Win10安装TensorRT

目录 什么是TensorRT 下载TensorRT 安装TensorRT 拷贝文件 安装whl文件 验证是否安装成功 什么是TensorRT TensorRT是由Nvidia推出的C语言开发的高性能神经网络推理库&#xff0c;是一个用于生成部署的优化器和运行时引擎。和cudnn类似&#xff0c;但它不支持训练&#xff…

开源与闭源 AI 模型:发展路径的比较与前瞻

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Git系列:rev-parse 使用技巧

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

springboot 项目集成 knife4j

官方版本推荐 版本依赖 spring boot 2.3.12.RELEASE 和 knife4j 2.0.9 引入依赖 完整的pom.xml文件 <!-- https://mvnrepository.com/artifact/com.github.xiaoymin/knife4j-spring-boot-starter --> <dependency><groupId>com.github.xiaoymin</groupI…