XPath爬虫实战:5分钟轻松实现当当网图书列表内容抓取

Python爬虫——当当网玄幻书籍信息的爬取 使用python语言,scrapy框架爬取当当网书籍等相关信息。是对scrapy框架实战基础的认识,最详细的巩固scrapy框架使用流程。 阅读详情

01 引言

我们已经分了两节介绍了XPath的基础用法、进阶技巧以及特殊神技,但都是基于浏览器的测试的,并没有实际运用的场景。本节我们将通过实际的案例应用Xpath技术。

02 项目背景

企业中,为了分析竞品,就可能会抓取竞品的数据进行拆解,然后更好的完善自己的产品并超越竞品;我们也会经常遇到通过省市区作为筛选条件的组件,这些基础的也需要从国家统计局官网爬取数据等等。

但是,不是所有的数据多可以爬取。如果恶意爬取隐私数据等就可能会触犯法律。这也是IT圈调侃的面向监狱编程。有可能是正人畜无害的码着代码,帽子叔叔就请你喝茶了。

在Robots协议允许范围内抓取公开数据,并尊重网站反爬虫措施(如验证码限制),通常不违法。抓取已公开的非敏感数据用于科研、分析等非商业用途,且在数据使用中不侵犯他人权益(如隐私权、著作权)时,可认定为合法。

所以编程有风险,爬虫需谨慎!

我们以公开信息以当当网的图书列表为例,获取【汪汪队立大功】的列表数据。

爬取数据:

  • 图书的图片链接
  • 图书名称
  • 图书价格
  • 图书定价
  • 图书折扣
  • 图书评论

03 爬虫编写

编写爬虫我们需要因为第三方插件,支持XPath语法

3.1 Maven依赖引入

<dependency>
    <groupId>cn.wanghaomiao</groupId>
    <artifactId>JsoupXpath</artifactId>
    <version>2.5.3</version>
</dependency>

JDK 本身支持XPath,但是只能解析xml,对Html支持并不友好,所以选择了第三方插件。

3.2 页面分析

整体分析

浏览器打开F12

可以看出每一个li 标签就是一个商品,我们只需要取出所有的li 就可以获取到当前列表的所有的数据了。

Xpath语法:

//ul[@id='component_59']/li

详细拆解元素

想要获取目标数据,只需要处理li中的子标签即可。

Xpath语法:

# 图片地址
//ul[@id='component_59']/li/a/img/@src

# 图书名称
//ul[@id='component_59']/li/p[@class='name']/a/@title

# 图书价格
//ul[@id='component_59']/li/p[@class='price']/span[1]/text()

# 图书定价
//ul[@id='component_59']/li/p[@class='price']/span[@class='search_pre_price']/text()

# 图书折扣
//ul[@id='component_59']/li/p[@class='price']/span[@class='search_discount']/text()

# 图书评论
//ul[@id='component_59']/li/p[@class='search_star_line']/a/text()

3.3 代码实战

@Test
void test01() {
    String miUrl = "https://search.dangdang.com/?key=%CD%F4%CD%F4%B6%D3%C1%A2%B4%F3%B9%A6&act=input";
    JXDocument jxDocument = JXDocument.createByUrl(miUrl);

    // 获取商品列表
    List<JXNode> jxNodes = jxDocument.selN("//ul[@id='component_59']/li");
    int count = 1;
    for (JXNode jxNode : jxNodes) {
        System.out.println("第【"+ count +"】本书:");
        System.out.println(" 图书图片地址:" +  xpathThenGet(jxNode, "/a/img/@src"));
        System.out.println(" 图书名称:" +  xpathThenGet(jxNode, "/p[@class='name']/a/@title"));
        System.out.println(" 图书当前价格:" +  xpathThenGet(jxNode, "/p[@class='price']/span[1]/text()"));
        System.out.println(" 图书定价:" +  xpathThenGet(jxNode, "/p[@class='price']/span[@class='search_pre_price']/text()"));
        System.out.println(" 图书折扣:" +  xpathThenGet(jxNode, "/p[@class='price']/span[@class='search_discount']/text()"));
        System.out.println(" 图书评论:" +  xpathThenGet(jxNode, "/p[@class='search_star_line']/a/text()"));
        System.out.println("-----------------图书分割线-----------------------");
        count++;
    }

}

private String xpathThenGet(JXNode jxNode, String xpathExpression) {
    return Optional.ofNullable(jxNode.selOne(xpathExpression)).map(JXNode::asString).orElse("暂无");
}

代码解析:

代码中分了两步处理,第一步先获取所有的li元素,第二步通过遍历li元素,获取每一个li元素里面的具体内容。

3.4 运行结果

总共获取到60本图书的信息:

从页面元素来看,确实就是60本书

04 小结

本节只是介绍了一个简单的案例,并通过所学完整一个小项目。如果只是处理一些简单的页面是可以直接使用的。但是好的爬虫需要考虑爬取的性能、可移植性、环境、安全性等方面,感兴趣的可以考虑考虑。

爬虫项目实战十一:爬取当当网商品信息 爬取当当网商品信息目标项目准备网站分析页码分析反爬分析代码实现效果显示 目标 批量爬取当当网商品信息,保存为csv文件到本地。 项目准备 软件:Pycharm 第三方库:requests,fake_useragent,lxml,csv 网站地址:http://search.dangdang.com/ 网站分析 打开网站页面,去搜索一种商品,比如豆豆鞋。 可以看到: http://search.dangdang.com/?key=%B6%B9%B6%B9%D0%AC&act=input key= 阅读详情

相关推荐

基于Python爬虫对当当网图书信息采集(10w条数据)+代码

通过对10万条当当图书网数据的采集和分析,我们能够深入理解当前图书市场的动态,为出版社、作者和读者提供有价值的市场洞察。

2301_79655576的博客 1117

【爬虫】4.5 实践项目——爬取当当网站图书数据

Scrapy框架+Xpath信息提取方法设计商城(这里用的当当网)商品信息网站及爬虫程序,以关键字“书包”(python)搜索页面的商品,爬取(学号相关的特定某几个页面(最后一位,页面大于3)及限定数量商品(最后3位))商品信息。1. 功能描述2. 程序的结构设计下面两个特定数量爬取写了两个管道 pipelines_1.py, pipelines_2.py。

Jack 1万+

DrissionPage vs Selenium:浏览器自动化工具性能对比与实战解析

浏览器自动化是数据采集、自动化测试和RPA(机器人流程自动化)领域的核心技术,它通过模拟用户操作实现网页交互与数据获取。其核心原理在于建立脚本与浏览器之间的通信通道,以驱动浏览器执行点击、输入、导航等行为。这项技术的价值在于能够高效处理需要JavaScript渲染的复杂页面,广泛应用于网络爬虫、Web应用测试和业务流程自动化等场景。在众多工具中,Selenium凭借其成熟的生态和跨浏览器兼容性成为行业标准,而DrissionPage则通过创新的“混合动力”架构,将浏览器操作与直接网络请求(HTTP请求)相结

aoanping0730的博客 451

爬虫笔记22——当当网图书详情页静、动态数据爬取

当当网内容简介动态数据获取

Yima_Dangxian的博客 1257

当当网书籍数据爬取及可视化分析

提取书名df['书名'] = df['标题'].apply(lambda x:x.split('(')[0])# 提取书籍简介df['书籍简介'] = df['标题'].str.extract('.*?((.*?))')# 如果为空,用True替代df['书籍简介'].fillna('无', inplace=True)# 提取评论数df['评论数'] = df['评论'].astype('int64')df.head(1)

m0_64212248的博客 3119

Python爬虫教程010:使用scrapy爬取当当网数据并保存

使用scrapy爬取爬取当当网数据并保存到本地。

WwLK123的博客 1352

Python价格追踪器实战:从爬虫到自动化监控系统搭建

网络爬虫是自动化获取网页数据的关键技术,其核心原理是通过模拟浏览器请求与解析HTML文档来提取目标信息。在数据驱动决策的背景下,爬虫技术为价格监控、市场分析等场景提供了自动化解决方案,具有显著的效率提升价值。结合Python生态中如requests、BeautifulSoup等成熟库,开发者可以快速构建稳定可靠的数据采集模块。本文聚焦于电商价格追踪这一典型应用场景,详细阐述了如何设计一个包含数据抓取、存储、调度与通知的完整监控系统,并深入探讨了应对反爬虫策略与提升解析稳定性的工程实践,为学习Python爬虫

weixin_30552811的博客 310

小华半导体HC32芯片开发使用说明

HC32F/L系列MCU在Keil MDK和IAR Workbench环境下通过工程样例进行软件开发。

小布的芯视角 5631

最新当当网爬虫实战学习(仅供学习)

这时我们就需要思考怎么样让数据刷新出来,首先通过资料查询我知道了在JavaScript里面有个网页最大高度,因为我们每次滑动网页它会加载内容,这会使网页高度变大,我们只需要获取并记录网页的最大高度将它与上一个网页的最大高度进行比较,如果相等了就说明已经到底了。现在当当网和网上视频教学的不太一样,它也是使用了js的懒加载,可是现在由于书籍变多,一次性加载服务器肯定受不了,我第一个实战项目的懒加载只是将内容写在了另一个类里,很容易爬取,但是这个我们可以通过开发者工具来观察。

huzhanxiao的博客 2003

基于STM32的RS485土壤氮磷钾与PH传感器数据采集与OLED显示实战(附完整代码)

本文详细介绍了基于STM32单片机通过RS485协议采集土壤氮磷钾与PH传感器数据的实战项目。涵盖硬件选型、连接方法、Modbus-RTU通信协议解析、STM32程序实现及OLED显示,提供完整代码和调试技巧,适用于农业物联网环境监测系统。

kotlin6android的博客 336

风控域——决策引擎系统设计

本文详细介绍了风控决策引擎系统的设计与应用。决策引擎系统是一种智能化工具,可自动化、数据驱动地辅助或替代人工决策,广泛应用于金融、医疗、营销、风控等领域。文章阐述了决策引擎的核心功能,包括自动化决策、动态规则管理、实时处理和模型集成,以及系统组成,涵盖数据输入层、规则引擎和模型服务层。此外,还探讨了决策引擎的典型应用场景、技术架构、组件设计,以及风控决策引擎系统的技术方案、设计难点和重点。

庄小焱 3320

python爬虫之利用pyquery爬取当当网图书信息

初学爬虫, 根据课程学习python爬虫,老规矩,先不管三七二十几,先敲了再说。 需求: 爬取图书的图片链接、图书的title信息、当前定价、评论数和评价星数共五部分信息。 分析: 打开当当,搜索python书籍,然后右键,检查网页元素,找到network,然后刷新整个页面,就会返回请求的页面数据,找到左边的红框内的请求链接,然后打开右边的response模块,检查下面返回的内容是否有我们需要的信息,发现没问题,就可以继续往下进行。 寻找图片: 把鼠标放在网页的图片上直接右键,然后...

u014543416的博客 6237

QT实现图片ROI区域的框选、移动、缩放(附完整源码)

QT实现图片ROI区域的框选、移动、缩放(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1194

爬虫笔记31:scrapy_redis案例之爬取 当当网(普通的scrapy爬虫)

一、scrapy_redis案例之爬取 当当网 整体思路:先实现普通的scrapy爬虫,然后在改写成scrapy_redis 普通的scrapy爬虫: (一)需求:获取特色书单中所有图书的书名和封面,如下图: (二)页面分析: 1、右键查看网页源代码,发现数据就在源代码中,不是js。 2、爬虫文件的实现: ...

微信公众号进阶的阿牛哥的博客 1298

【YOLO目标检测全栈实战】98 YOLO模型在低光照环境下的自适应增强策略

你有没有遇到过这种情况?深夜加班调试产线检测模型,车间灯光昏暗,摄像头采集的图片黑乎乎一片,YOLO模型直接“罢工”——漏检率飙升到40%以上。上个月我在一个汽车零部件质检项目里就栽了跟头:白天模型跑得飞起,mAP@0.5达到0.92,可一到夜班,同样的产线、同样的零件,mAP直接掉到0.63。客户拍着桌子问我:“你这模型怎么还分白天黑夜?”

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 284

LVGL 磁罗盘效果

环境:LVGL 9.x + SDL2,窗口 1280×800。界面文案用英文(默认 Montserrat,无 CJK)。本文按实现顺序讲:先建立两个耦合转动体,再把磁倾角误差从卡面倾斜里推出来,最后用同一套投影把刻度、数字和目标画到卡上。画面上的迟滞、涡流、摆动和读数偏差都来自方程,没有补间动画。

摸鱼专家 88

使用PyCharm编写爬虫程序,爬取当当网 Top 500 本五星好评书籍

获取到源代码,对其进行解析,使用正则获取想要的关键信息,获取到之后封装数据。我们就使用 requests 和 re 来写一个爬虫。那么我们等会在 python 中可以用一个变量。那么我们等会在 python 中可以用一个变量。3.首先我们要对我们的目标网站进行分析。那么我们等会就可以使用正则表达式。链接地址的最后一个参数会跟着变。链接地址的最后一个参数会跟着变。我们要的就是前 500 本书的。我们可以看到是这样的一个网页。也就是我们翻到第几页的时候。也就是我们翻到第几页的时候。

欢迎来到我的小家 1449

1. 动手开发第一个 SAP CDS View

在开始学习前,大家需要根据这篇文章介绍的步骤,在自己本地电脑上,把 ABAP Development Tool 安装好。右键单击这个添加好的 ABAP 开发包,选择新建一个 ABAP Repository Object,类型就选择。,就可以像在 SAPGUI 里使用 SE16 那样,查看这个 CDS View 的内容。笔者下一篇文章,会详细介绍我们创建的第一个 CDS View 的每一行代码的详细含义。从本文开始,正式进入 CDS View 开发的学习。的条件,然后点击 Run 重新执行,得到结果。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1271

python当当网爬虫

   最终要实现的是将当当网上面的书籍信息,书籍名字,网址和评论数爬取,存入到数据库中。(首先要做的是创建好数据库,创建的数据库名字为dd,创建的表为books,字段为title,link,comment)。 1、创建项目 scrapy startproject dangdang 2、进入项目文件夹创建爬虫文件 &gt;scrapy genspider –t basic dd dangdan...

xx20cw的博客 2462

视觉Transformer实战 | Cross-Attention Multi-Scale Vision Transformer(CrossViT)详解与实现

Vision Transformer (ViT) 在计算机视觉领域取得了巨大成功,但标准 ViT 结构在处理不同尺度的视觉特征时存在局限性。双分支 ViT (Cross-Attention Multi-Scale Vision Transformer, CrossViT) 通过引入双分支结构来解决这一问题,能够同时捕获局部和全局视觉特征。本文将详细介绍 CrossViT 的技术原理,并使用 PyTorch 从零开始实现 CrossViT 模型。

盼小辉丶的博客 722

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

当当网爬虫

我对当当网所分类进行了遍历 ,对分类下的商品内容精心爬取,算是一个简单的爬取,并没有细化分类 爬取所有的商品 下面是爬虫的spiderimport scrapy from pyquery import PyQuery as pq from dangdang.items import DangdangItem class SpiderSpider(scrapy.Spider): name

wangjiakang12306的博客 1752

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Python爬虫爬取当当网图书信息(selenium模拟谷歌浏览器版)

以及爬取图书图片的url的时候,存在爬取到"https://search.dangdang.com/Standard/Search/Extend/hosts/images/model/guan/url_none.png"的情况,这里我们采用另一种爬取方式以求爬取到正确的图片url。由于是模拟谷歌浏览器,需要在运行代码的计算机上下载有谷歌浏览器,同时也需要根据谷歌浏览器的版本下载相应版本的谷歌浏览器驱动放在PyCharm 项目的根目录下,这里就不在过多赘述了,详情参考。

m0_74149104的博客 2715

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

用Scrapy抓取当当网站数据

为了解决这个问题,我学习了如何动态调整选择器以适应变化的网页结构,并通过查看网页源代码来快速调整选择器,确保爬虫的准确性。此外,通过对数据进行统计和可视化分析,我更全面地了解了抓取到的信息,发现了一些潜在的趋势和规律。等步骤,我成功地构建了一个功能强大的爬虫,能够高效地抓取和处理目标网站的信息。的中间件和设置,我更好地掌握了爬虫的并发和异步请求的处理方式,提高了爬取效率。在这里添加完我们需要爬取的哪些数据后,我们在转向我们的爬虫文件,我们通过。框架的使用,还培养了解决实际问题的能力,让我受益匪浅。

fankeyang的博客 1855

爬虫实践项目--scrapy爬取当当网前100页数据

通俗的说就是你要下载的数据都有什么# 图片# 名字# 价格。

m0_74098051的博客 1307

从当当网批量获取图书信息

爬取当当网图书数据并保存到本地,使用request、lxml的etree模块、pandas保存数据为excel到本地。

svygh123的专栏 1377
上一篇: XPath高阶玩法:灵活使用Axes技巧+函数,爬虫效率翻倍!
下一篇: 程序员注意!这些代码可能会让你“吃牢饭”!
智_永无止境
博客等级 码龄10年 803粉丝 404原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智_永无止境

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值