使用Python和Selenium爬取京东商品数据

简介❤❤

码农不是吗喽(大学生版)-CSDN博客

在本文中,我们将探讨如何使用Python编程语言结合Selenium库来爬取京东网站上的商品数据。Selenium是一个强大的工具,可以模拟真实用户对网页的交互操作,非常适合进行网页自动化测试和数据抓取。

一、环境准备🎉

(❤ ω ❤)

  • Python 3.x
  • Selenium库
  • lxml库
  • ChromeDriver或EdgeDriver(根据使用的浏览器)

二、正文🎃

1. 导入必要的库

首先,我们需要导入Selenium WebDriver以及lxml库,用于解析网页源代码。

from selenium import webdriver
from selenium.webdriver.common.by import By
from lxml import etree
import time

2. 设置WebDriver

接下来,初始化WebDriver,这里我们使用的是Edge浏览器。

driver = webdriver.Edge()
driver.maximize_window()

3. 编写爬虫函数

定义一个函数get_info来获取商品信息,并通过递归调用NextPage函数来实现翻页。

def get_info(url, page):page = page + 1driver.get(url)driver.implicitly_wait(10)selector = etree.HTML(driver.page_source)infos = selector.xpath('//*[@id="J_goodsList"]/ul/li')  # 修改XPath选择器以匹配正确的元素for info in infos:price = info.xpath('.//div[3]/strong/i/text()')[0]  # 确保返回的是列表,并使用[0]获取第一个元素print(price)shop = info.xpath('.//div[7]/span/a/text()')[0]  # 同上print(shop)if page <= 5:NextPage(url, page)# else部分不需要,可以删除

4. 翻页逻辑

定义NextPage函数来处理翻页逻辑,并在找不到下一页按钮时给出提示。

def NextPage(url, page):driver.get(url)driver.implicitly_wait(10)try:driver.find_element_by_xpath('//*[@id="J_bottomPage"]').click()  # 确保元素存在except:print("没有找到下一页按钮,可能已经到最后一页或页面结构有变化。")time.sleep(10)driver.get(driver.current_url)driver.implicitly_wait(10)get_info(driver.current_url, page)

5. 主函数

编写主函数来启动爬虫,首先访问京东首页,搜索“手机”,然后开始爬取商品数据。

if __name__ == '__main__':page = 1url = 'https://www.jd.com/'driver.get(url)driver.implicitly_wait(10)# 使用By.ID来指定查找元素的方式driver.find_element(By.ID, 'key').clear()driver.find_element(By.ID, 'key').send_keys('手机')# 假设'button'是按钮元素的class namedriver.find_element(By.CLASS_NAME, 'button').click()time.sleep(3)get_info(driver.current_url, page)

五、结论

本文介绍了使用Python和Selenium库爬取京东商品数据的方法。通过编写自动化脚本,我们可以高效地获取网页上的数据,为数据分析和市场研究提供支持。

参考文献

  • Selenium with Python — Selenium Python Bindings 2 documentation (selenium-python.readthedocs.io)
  • lxml - Processing XML and HTML with Python

 

 

 

 

 

 

 

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

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

相关文章

Etcd-v3.4.27集群部署

下载etcd # wget https://storage.googleapis.com/etcd/v3.4.27/etcd-v3.4.27-linux-amd64.tar.gz --2024-07-16 09:46:54-- https://storage.googleapis.com/etcd/v3.4.27/etcd-v3.4.27-linux-amd64.tar.gz Resolving storage.googleapis.com (storage.googleapis.com)... …

AI写作辅助,如何确保学术诚信?

感谢笔灵AI&#xff0c;让我论文完成后但毕竟是AI生成的&#xff0c;充满了AI的痕迹。不敢轻率地将其呈交&#xff01;最终一个必须完成的任务就是清除AI的痕迹。今天就为大家带来笔灵去AI痕迹&#xff0c;好用到哭&#xff01;走起&#xff01; 传送门&#xff1a;https://ib…

Mysql知识大全

Mysql 数据库是所有软件体系中最核心的存在 DBA 1.1什么是数据库 数据库&#xff08;DB&#xff0c;DataBase&#xff09; 概念&#xff1a;数据仓库&#xff0c;软件&#xff0c;安装在操作系统上&#xff08;window&#xff0c;linux...&#xff09; 作用&#xff1a;存…

新版本WPS不登录无法编辑的解决办法

原因分析&#xff1a;新版本的WPS因加入多种在线功能&#xff0c;建议登录账号获得更加体验 解决办法&#xff1a;首选第一种修改注册表后重启WPS&#xff0c;第二种仅作为临时满足工作需求&#xff0c;过一段时间会自动失效 方法一&#xff1a;键盘同时按下WINR键&#xff0c;…

AI推介-大语言模型LLMs论文速览(arXiv方向):2024.07.10-2024.07.15

文章目录&#xff5e; 1.FairyLandAI: Personalized Fairy Tales utilizing ChatGPT and DALLE-32.Human-like Episodic Memory for Infinite Context LLMs3.Mitigating Entity-Level Hallucination in Large Language Models4.Predicting and Understanding Human Action Deci…

【NLP大模型】词嵌入的空间表示与应用

文章目录 一、语义特征空间二、引入新维度&#xff1a;皇室三、语义特征向量的用途四、向量运算类比五、词嵌入的维度和应用词嵌入的应用 六、测量欧几里得距离向量计算向量和欧几里得距离 七、使用点积测量相似度八、创建词嵌入 一、语义特征空间 考虑“男人”、“女人”、“…

33页PPT免费下载 | 2024企业数据资产化及数据资产入表白皮书

一、前言 2024年01月&#xff0c;财政部《关于加强数据资产管理的指导意见》&#xff0c;通过加强和规范公共数据资产基础管理工作探索公共数据资产应用机制&#xff0c;促进公共数据资产高质量供给&#xff0c;有效释放公共数据价值&#xff0c;为赋能实体经济数字化转型升级…

JS【详解】数组(数组的本质、创建数组、常用数组操作API汇总对比和实战范例、数组的遍历、复制、去重等)

数组用于存储多个有序的数据 数组本质上是以数字为键&#xff08;从0开始&#xff0c;依次递增&#xff09;&#xff0c;并外加一个会自动增长的 length 属性的对象。 创建数组 方式 1 - 通过字面量创建 // 空数组 let arr1 []; let arr2 [1,2,3];方式 2 - 使用构造函数 ne…

Java用JDBC链接mysql

一、什么是JDBC&#xff1a; 是Java平台上的标准数据库访问技术。它提供了一套API&#xff08;应用程序编程接口&#xff09;&#xff0c;允许Java应用程序与各种类型的数据库进行交互&#xff0c;包括关系型数据库&#xff08;如MySQL、Oracle、SQL Server等&#xff09;和非关…

【日记】艾尔登法环终于玩完了(348 字)

正文 昨天打了一天游戏。法环差不多通关了。最终 boss 艾尔登鼻涕虫实在打不过&#xff0c;两个人开挂打了。艾尔登之兽老是马拉松&#xff0c;这谁顶得住&#xff0c;追都追不上。据兄长说&#xff0c;这游戏大概还有 50%-60% 的内容没玩&#xff0c;不过就这样吧&#xff0c;…

解决VMware虚拟机在桥接模式下无法上网的问题

解决VMware虚拟机在桥接模式下无法上网的问题 windows11系统自动启动了热点功能&#xff0c;开启热点可能会干扰虚拟机的桥接设置。 方法一&#xff1a;windows11可以提供网络热点服务 方法二&#xff1a;手动指定桥接的物理网卡 方法一&#xff1a;关闭热点功能 优点&#xff…

MYSQL 四、mysql进阶 10(数据库其它调优策略)

一、数据库调优的措施 1.1 调优的目标 尽可能节省系统资源 &#xff0c;以便系统可以提供更大负荷的服务。&#xff08;吞吐量更大&#xff09;合理的结构设计和参数调整&#xff0c;以提高用户操作响应的速度 。&#xff08;响应速度更快&#xff09;减少系统的瓶颈&#xff…

13 循环神经网络—序列模型,语言模型

目录 1.序列模型序列数据统计工具自回归模型马尔可夫模型因果关系前向算法举例(根据过去的事件推测未来的事件)方案 A -马尔科夫假设方案 B -潜变量模型总结代码实现 使用马尔科夫假设 训练一个MLP2.文本预处理常见的文本预处理步骤代码实现3.语言模型**使用计数来建模**N 元…

VUE前端HTML静默打印(不弹出打印对话框)PDF简单方案

前言 在做打印功能的时候&#xff0c;以前大部分客户端都是用C#做的&#xff0c;静默打印&#xff08;也就是不弹出打印对话框&#xff09;比较简单。 但是使用浏览器作为客户端&#xff0c;静默打印&#xff08;也就是不弹出打印对话框&#xff09;做起来就比较困难。困难的…

getaddrinfo 获取地址信息(C语言函数库/CRT)

getaddrinfo 是POSIX定义的通用函数&#xff0c;该函数可以在 Windows、MacOS X、Linux、Android 等平台正确编译且工作。 getaddrinfo 函数的作用为&#xff1a;解释域/IP的地址信息&#xff0c;可简易理解为DNS解析函数。 static IPEndPoint Ipep_GetEndPointWithNative(cons…

python笔记(转存ipynb)------1

list1 ["tom","cat","Lili"] print(list1[0].title())Tom#append()列表方法在列表末尾添加新元素 list1.append(233) print(list1) #可以先创建空列表&#xff0c;再进行追加append(..)以添加[tom, cat, Lili, 233]#insert()列表方法插入元素 l…

29.【C语言】自定义函数

1、自定义详解 *提示&#xff1a;先看第12,19篇 例&#xff1a;写一个程序交换两个变量的值 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> void swap(int x, int y) {int z 0;z x;x y;y z; } int main() {int a 10;int b 20;swap(a, b);printf("%d…

让AI语言模型自由飞翔:LangChain框架的奇妙世界

今天&#xff0c;我将为大家揭开一项令人激动的技术——LangChain。想象一下&#xff0c;如果能将人工智能的强大能力与我们日常使用的数据和工具无缝连接&#xff0c;那将开启怎样崭新且无限的可能&#xff01; LangChain&#xff0c;一个专为大型语言模型设计的框架&#xf…

TG创建小程序交互APP登录以及机器人信息

1、搜索 BotFather &#xff0c;输入命令 /newbot 创建机器人。 2、修改机器人信息 /mybots 编辑名称 : 修改机器人名称 编辑关于: 修改关于 hayden yyds&#xff0c;修改以后打开机器人会出现在下图 编辑描述 : 机器人的描述 编辑描述图片 : 机器人的图片 编辑 Botpic…

瑞幸私域运营案例拆解

1. 私域运营概述 私域运营是一种以用户为中心的运营模式&#xff0c;通过建立和维护与用户之间的直接联系&#xff0c;实现品牌与用户之间的深度互动和长期价值挖掘。 1.1 私域流量定义 私域流量指的是企业通过自有渠道&#xff0c;如微信公众号、小程序、社群等&#xff0c…