Python CSS选择器爬取京东网商品信息过程解析


Posted in Python onJune 01, 2020

CSS选择器

目前,除了官方文档之外,市面上及网络详细介绍BeautifulSoup使用的技术书籍和博客软文并不多,而在这仅有的资料中介绍CSS选择器的少之又少。在网络爬虫的页面解析中,CCS选择器实际上是一把效率甚高的利器。虽然资料不多,但官方文档却十分详细,然而美中不足的是需要一定的基础才能看懂,而且没有小而精的演示实例。

Python CSS选择器爬取京东网商品信息过程解析

京东商品图

首先进入京东网,输入自己想要查询的商品,向服务器发送网页请求。在这里小编仍以关键词“狗粮”作为搜索对象,之后得到后面这一串网址:
https://search.jd.com/Search?keyword=%E7%8B%97%E7%B2%AE&enc=utf-8,其中参数的意思就是我们输入的keyword,在本例中该参数代表“狗粮”,具体详情可以参考Python大神用正则表达式教你搞定京东商品信息。所以,只要输入keyword这个参数之后,将其进行编码,就可以获取到目标URL。之后请求网页,得到响应,尔后利用CSS选择器进行下一步的数据采集。

商品信息在京东官网上的部分网页源码如下图所示:

Python CSS选择器爬取京东网商品信息过程解析

部分网页源码

仔细观察源码,可以发现我们所需的目标信息在红色框框的下面,那么接下来我们就要一层一层的去获取想要的信息。

在Python的urllib库中提供了quote方法,可以实现对URL的字符串进行编码,从而可以进入到对应的网页中去。

Python CSS选择器爬取京东网商品信息过程解析

CSS选择器在线复制

很多小伙伴都觉得CSS表达式很难写,其实掌握了基本的用法也就不难了。在线复制CSS表达式如上图所示,可以很方便的复制CSS表达式。但是通过该方法得到的CSS表达式放在程序中一般不能用,而且长的没法看。所以CSS表达式一般还是要自己亲自上手。

直接上代码,利用CSS去提取目标信息,如商品的名字、链接、图片和价格,具体的代码如下图所示:

Python CSS选择器爬取京东网商品信息过程解析

代码实现

如果你想快速的实现功能更强大的网络爬虫,那么BeautifulSoupCSS选择器将是你必备的利器之一。BeautifulSoup整合了CSS选择器的语法和自身方便使用API。在网络爬虫的开发过程中,对于熟悉CSS选择器语法的人,使用CSS选择器是个非常方便的方法。

最后得到的效果图如下所示:

Python CSS选择器爬取京东网商品信息过程解析

最终效果图

新鲜的狗粮再一次出炉咯~~~

Python CSS选择器爬取京东网商品信息过程解析

CSS选择器

关于CSS选择器的简单介绍:

BeautifulSoup支持大部分的CSS选择器。其语法为:向tag对象或BeautifulSoup对象的.select()方法中传入字符串参数,选择的结果以列表形式返回,即返回类型为list。

tag.select("string")

BeautifulSoup.select("string")

注意:在取得含有特定CSS属性的元素时,标签名不加任何修饰,如class类名前加点,id名前加 /#。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python的Django框架中模板碎片缓存简介
Jul 24 Python
Python随机生成数据后插入到PostgreSQL
Jul 28 Python
学习Python selenium自动化网页抓取器
Jan 20 Python
浅谈使用Python内置函数getattr实现分发模式
Jan 22 Python
pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换实例
Aug 02 Python
Python3转换html到pdf的不同解决方案
Mar 11 Python
Python实现Selenium自动化Page模式
Jul 14 Python
Windows下PyCharm2018.3.2 安装教程(图文详解)
Oct 24 Python
Django生成PDF文档显示网页上以及PDF中文显示乱码的解决方法
Dec 17 Python
pytorch中的自定义反向传播,求导实例
Jan 06 Python
Python描述符descriptor使用原理解析
Mar 21 Python
Python 多线程处理任务实例
Nov 07 Python
matlab、python中矩阵的互相导入导出方式
Jun 01 #Python
如何理解Python中的变量
Jun 01 #Python
pycharm实现print输出保存到txt文件
Jun 01 #Python
Python如何爬取qq音乐歌词到本地
Jun 01 #Python
pycharm sciview的图片另存为操作
Jun 01 #Python
Python利用Xpath选择器爬取京东网商品信息
Jun 01 #Python
Python用类实现扑克牌发牌的示例代码
Jun 01 #Python
You might like
关于PHP中的Class的几点个人看法
2006/10/09 PHP
php下通过伪造http头破解防盗链的代码
2010/07/03 PHP
PHP实现的汉字拼音转换和公历农历转换类及使用示例
2014/07/01 PHP
PHP获取短链接跳转后的真实地址和响应头信息的方法
2014/07/25 PHP
php版微信公众账号第三方管理工具开发简明教程
2016/09/23 PHP
PHP实现的注册,登录及查询用户资料功能API接口示例
2017/06/06 PHP
jQuery中的常用事件总结
2009/12/27 Javascript
jquery下onpropertychange事件的绑定方法
2010/08/01 Javascript
如何在JavaScript中实现私有属性的写类方式(二)
2013/12/04 Javascript
点击标签切换和自动切换DIV选项卡
2014/08/10 Javascript
浅析JQuery中的html(),text(),val()区别
2014/09/01 Javascript
基于jQuery实现的QQ表情插件
2015/08/25 Javascript
javascript对象的创建和访问
2016/03/08 Javascript
AngularJS入门教程之AngularJS模型
2016/04/18 Javascript
浅析javaScript中的浅拷贝和深拷贝
2017/02/15 Javascript
webpack学习--webpack经典7分钟入门教程
2017/06/28 Javascript
浅谈vue的iview列表table render函数设置DOM属性值的方法
2017/09/30 Javascript
nodejs实现的连接MySQL数据库功能示例
2018/01/25 NodeJs
[23:21]Ti4 冒泡赛第二轮DK vs C9 2
2014/07/14 DOTA
python 中的列表解析和生成表达式
2011/03/10 Python
Python中使用Beautiful Soup库的超详细教程
2015/04/30 Python
Python实现批量检测HTTP服务的状态
2016/10/27 Python
python 网络编程详解及简单实例
2017/04/25 Python
Python生成器以及应用实例解析
2018/02/08 Python
pycharm运行程序时在Python console窗口中运行的方法
2018/12/03 Python
在python tkinter中Canvas实现进度条显示的方法
2019/06/14 Python
python实现按首字母分类查找功能
2019/10/31 Python
Linux如何压缩可执行文件
2014/03/27 面试题
大学生职业生涯规划范文
2014/01/22 职场文书
党干部专题民主生活会对照检查材料思想汇报
2014/10/06 职场文书
2014年机关后勤工作总结
2014/12/16 职场文书
考试作弊检讨
2015/01/27 职场文书
财务统计员岗位职责
2015/04/14 职场文书
2015年高中生国庆节演讲稿
2015/07/30 职场文书
详解Python中的for循环
2022/04/30 Python
MySQL生成千万测试数据以及遇到的问题
2022/08/05 MySQL