Python利用Xpath选择器爬取京东网商品信息
作者:Python进阶学习交流 发布时间:2021-05-18 09:08:41
HTML文件其实就是由一组尖括号构成的标签组织起来的,每一对尖括号形式一个标签,标签之间存在上下关系,形成标签树;XPath 使用路径表达式在 XML 文档中选取节点。节点是通过沿着路径或者 step 来选取的。
首先进入京东网,输入自己想要查询的商品,向服务器发送网页请求。在这里小编仍以关键词“狗粮”作为搜索对象,之后得到后面这一串网址:
https://search.jd.com/Search?keyword=%E7%8B%97%E7%B2%AE&enc=utf-8,其中参数的意思就是我们输入的keyword,在本例中该参数代表“狗粮”,具体详情可以参考Python大神用正则表达式教你搞定京东商品信息。所以,只要输入keyword这个参数之后,将其进行编码,就可以获取到目标URL。之后请求网页,得到响应,尔后利用bs4选择器进行下一步的数据采集。
商品信息在京东官网上的部分网页源码如下图所示:
狗粮信息在京东官网上的网页源码
仔细观察源码,可以发现我们所需的目标信息是存在<li data-sku="*****" class="gl-item">标签下的,那么接下来我们就像剥洋葱一样,一层一层的去获取我们想要的信息。
通常URL编码的方式是把需要编码的字符转化为%xx的形式,一般来说URL的编码是基于UTF-8的,当然也有的于浏览器平台有关。在Python的urllib库中提供了quote方法,可以实现对URL的字符串进行编码,从而可以进入到对应的网页中去。
在线复制Xpath表达式
很多小伙伴都觉得Xpath表达式很难写,其实掌握了基本的用法也就不难了。在线复制Xpath表达式如上图所示,可以很方便的复制Xpath表达式。但是通过该方法得到的Xpath表达式放在程序中一般不能用,而且长的没法看。所以Xpath表达式一般还是要自己亲自上手。
直接上代码,利用Xpath去提取目标信息,如商品的名字、链接、图片和价格,具体的代码如下图所示:
爬虫代码
在这里,小编告诉大家一个Xpath表达式匹配技巧。之前看过好几篇文章,大佬们都推荐Xpath表达式使用嵌套匹配的方式。在本例中,首先定义items,如下所示:
items = selector.xpath('//li[@class="gl-item"]')
之后通过range函数,逐个从网页中进行匹配目标信息,而不是直接通过复制Xpath表达式的方式一步到位。希望小伙伴们以后都可以少入这个坑~~
最后得到的效果图如下所示:
最终效果图
新鲜的狗粮再一次出炉咯~~~
小伙伴们,有没有发现利用Xpath来获取目标信息比正则表达式要简单一些呢?
来源:https://www.toutiao.com/i6513499042457059844/


猜你喜欢
- 本文实例讲述了Python3.6实现连接mysql或mariadb的方法。分享给大家供大家参考,具体如下:python3.6的安装查看前面一
- 这问题在网络相信已经有不少人问到,最近再次被牵起讨论,籍此记录一下个人的理解,border:none;与border:0;的区别体现有两点:
- def Num2MoneyFormat( change_number ): ""&q
- 本文实例总结了php遍历目录方法。分享给大家供大家参考。具体如下:1. 方法1 <?p
- 写在前面Go语言在很多方面天然的具备很多便捷性,譬如网络编程,并发编程。而通道则又是Go语言实现并发编程的重要工具,因为其承担着通道之间互相
- 要介绍Python的三元表达式,可以先看看其他编程语言比如C,JAVA中应用:public class java { public stat
- 问题: pydev使用wx库开发的过程中,import时碰到wx可以识别,但是其它很多函数和变量上面全部是红叉,即无法识别。 解决方法: 1
- 语法JavaScript的语法和Java语言类似,每个语句以;结束,语句块用{...}。但是,JavaScript并不强制要求在每个语句的结
- 控制台打印时显示的2位小数:pd.set_option('precision', 2)实际修改数据精度:官例:http://
- 如下所示:import pandas as pddef my_min(a, b): return min(abs(a),abs(
- tkinter如何实现下拉框联动有些小伙伴想在GUI界面上实现像前端一样的下拉框联动的效果,但是前端可以通过Ajax实现,GUI如何实现呢,
- Menu(菜单)组件用于实现顶级菜单、下拉菜单和弹出菜单。何时使用 Menu 组件?Menu 组件通常被用于实现应用程序上的各种菜单,由于该
- 一.序单从库名大概就能猜出其作用。sync.Once使用起来很简单, 下面是一个简单的使用案例package mainimport (&qu
- 免责声明:本教程所有资源均来源于网络;仅用于学习交流,请勿用于任何商业行为;如需要,请使用正版授权;侵权联删。此篇教程通过无限重置试用期持续
- 本文实例讲述了Python连接MongoDB数据库的方法。分享给大家供大家参考,具体如下:Python使用pymongo操作MongoDB数
- 1 安装nginx下载windows上的nginx最新版本,http://www.nginx.org/en/download.html。解压
- 一、如何创建用户和密码1.进入到mysql数据库下mysql> use mysqlDatabase changed2.对新用户增删改1
- 一、and:在Python 中,and 和 or 执行布尔逻辑演算,如你所期待的一样,但是它们并不返回布尔值;而是,返回它们实际进行比较的值
- 一、定义与作用主键:表中能够唯一地辨别事物的属性。通过主键能够查询出表中一条完整的记录,同时使用主键能防止表中出现重复的记录,避免了数据的冗
- TNS是Oracle Net的一部分,是专门用来管理和配置Oracle数据库和客户端连接的一个工具,在大多数情况下客户端和数据库要通讯,就必