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提示No module named images的解决方法
Sep 29 Python
Python的Django中django-userena组件的简单使用教程
May 30 Python
python读取和保存视频文件
Apr 16 Python
python 删除指定时间间隔之前的文件实例
Apr 24 Python
Python实现判断一行代码是否为注释的方法
May 23 Python
pandas去除重复列的实现方法
Jan 29 Python
python3的print()函数的用法图文讲解
Jul 16 Python
深入了解python中元类的相关知识
Aug 29 Python
关于pycharm中pip版本10.0无法使用的解决办法
Oct 10 Python
Python基于paramunittest模块实现excl参数化
Apr 26 Python
详解pandas获取Dataframe元素值的几种方法
Jun 14 Python
Python浮点型(float)运算结果不正确的解决方案
Sep 22 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
各种战术和打法的原创者
2020/03/04 星际争霸
成本8450万,票房仅2亿,口碑两极分化,又一部DC电影扑街了
2020/04/09 欧美动漫
discuz安全提问算法
2007/06/06 PHP
phpmyadmin MySQL 加密配置方法
2009/07/05 PHP
php递归创建和删除文件夹的代码小结
2012/04/13 PHP
PHP中isset()和unset()函数的用法小结
2014/03/11 PHP
php通过rmdir删除目录的简单用法
2015/03/18 PHP
PHP+shell实现多线程的方法
2015/07/01 PHP
php实现的任意进制互转类分享
2015/07/07 PHP
goto语法在PHP中的使用教程
2020/09/17 PHP
js有序数组的连接问题
2013/10/01 Javascript
Javascript动态引用CSS文件的2种方法介绍
2014/06/06 Javascript
浅谈javascript中的call、apply、bind
2016/03/06 Javascript
手机端图片缩放旋转全屏查看PhotoSwipe.js插件实现
2016/08/25 Javascript
JS实现颜色动态淡化效果
2017/03/06 Javascript
JavaScript 函数的定义-调用、注意事项
2017/04/16 Javascript
jQuery实现html table行Tr的复制、删除、计算功能
2017/07/10 jQuery
angular指令笔记ng-options的使用方法
2017/09/18 Javascript
微信小程序中进行地图导航功能的实现方法
2018/06/29 Javascript
vue-cli3.0 环境变量与模式配置方法
2018/11/08 Javascript
微信小程序如何刷新当前界面的实现方法
2019/06/07 Javascript
在pycharm中开发vue的方法步骤
2020/03/04 Javascript
[02:36]DOTA2混沌骑士 英雄基础教程
2013/11/26 DOTA
[40:48]DOTA2上海特级锦标赛D组败者赛 Liquid VS COL第二局
2016/02/28 DOTA
Python 爬虫爬取指定博客的所有文章
2016/02/17 Python
树莓派使用python-librtmp实现rtmp推流h264的方法
2019/07/22 Python
Django ORM 聚合查询和分组查询实现详解
2019/08/09 Python
python dataframe NaN处理方式
2019/12/26 Python
关于python 的legend图例,参数使用说明
2020/04/17 Python
python中os包的用法
2020/06/01 Python
Cpython解释器中的GIL全局解释器锁
2020/11/09 Python
css3 中的新特性加强记忆详解
2016/04/16 HTML / CSS
《花瓣飘香》教学反思
2014/04/15 职场文书
2014年设备管理工作总结
2014/11/26 职场文书
小学教代会开幕词
2016/03/04 职场文书
SpringBoot整合minio快速入门教程(代码示例)
2022/04/03 Java/Android