【网络爬虫入门04】彻底掌握BeautifulSoup的CSS选择器

广东职业技术学院  欧浩源 2017-10-21

1、引言

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

2、CSS选择器概述

BeautifulSoup支持大部分的CSS选择器。
    语法为:向tag对象或BeautifulSoup对象的.select()方法中传入字符串参数,选择的结果以列表形式返回,即返回类型为list。
    tag.select("string")
    BeautifulSoup.select("string")
    注意:在取得含有特定CSS属性的元素时,标签名不加任何修饰,类名前加点,id名前加 #。

3、CSS测试样例

4、通过标签查找

例1:选择所有的title标签。

例2:选择所有的p标签中的第3个标签。

例3:选择body标签下的所有a标签。

例4:选择body标签下的直接子标签a。

例5:选择id=link1后的所有兄弟节点标签。类名前加点,id名前加 #。

例6:选择id=link1后的下一个兄弟节点标签。

5、通过CSS类名查找

例7:查找class类名为sister的标签。

例8:查找P标签下class类名为title的标签。

6、通过标签的id属性查找

例9:选择id属性为link2的所有标签。

例10:选择a标签,其id属性为link2的标签。

7、同时用多种CSS选择器查询元素

例11:选择id属性为link2和id属性为link3的所有标签。

例12:选择class属性为red、id属性为link2和id属性为link3的所有标签。

8、通过是否存在某个属性来查找

例13:查找a标签下存在herf属性的标签。

9、通过属性的值来查找

例14:选择a标签,其属性href=http://example.com/lacie的所有标签。

例15:选择a标签,其href属性以http开头的所有标签。

例16:选择a标签,其href属性以lie结尾的所有标签。

例17:选择a标签,其href属性包含.com的标签。

10、通过标签逐层查找

例18:首先选中所有的p标签中的第3个标签,然后在该标签中查找name的属性值为OHY的标签。

例19:首先选中所有的p标签中的第3个标签,然后在该标签列表中查找a标签,并将该列表中的第1个标签的文本取出。

11、返回查找到的元素的第一个标签

例20:选择class类名为sister的所有标签中的第一个。

12、小结

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

转载于:https://www.cnblogs.com/ALittleBee/p/7702560.html

【网络爬虫入门04】彻底掌握BeautifulSoup的CSS选择器相关推荐

  1. Python爬虫实例(3)--BeautifulSoup的CSS选择器

    Python爬虫实例 紧接着上一讲的内容. 我们初步了解了bs4这个解析库. 但是bs4难道只有find,find_all了吗? 如果层次比较深,相似的元素比较多,和可能会写的比较长. 最主要的是很难 ...

  2. 【网络爬虫入门01】应用Requests和BeautifulSoup联手打造的第一条网络爬虫

    [网络爬虫入门01]应用Requests和BeautifulSoup联手打造的第一条网络爬虫 广东职业技术学院 欧浩源 2017-10-14  1.引言 在数据量爆发式增长的大数据时代,网络与用户的沟 ...

  3. 【学习教程系列】最通俗的 Python3 网络爬虫入门

    很多朋友学习Python都是先从爬虫开始,其原因不外两方面: 其一Python对爬虫支持度较好,类库众多,其二语法简单,入门容易,所以两者形影相随,不离不弃. 要使用python语言做爬虫,首先需要学 ...

  4. python爬虫学习笔记一:网络爬虫入门

    参考书目 <python网络爬虫从入门到实践>唐松 第一章 网络爬虫入门 1.1 robots协议 举例:查看京东的robots协议 京东robots协议地址 User-agent: * ...

  5. python六小时网络爬虫入门_一小时入门 Python 3 网络爬虫

    原标题:一小时入门 Python 3 网络爬虫 作者:Jack-Cui,热爱技术分享,活跃于 CSDN 和知乎,开设的<Python3网络爬虫入门>.<Python3机器学习> ...

  6. Python网络爬虫入门

    Python网络爬虫入门 网络爬虫(web crawler),也叫网络蜘蛛(Web Spider).网络机器人(Internet Bot).简单地说,抓取万维网(World Wide Web)上所需要 ...

  7. 【网络爬虫入门02】HTTP客户端库Requests的基本原理与基础应用

    [网络爬虫入门02]HTTP客户端库Requests的基本原理与基础应用 广东职业技术学院  欧浩源 2017-10-15  1.引言 实现网络爬虫的第一步就是要建立网络连接并向服务器或网页等网络资源 ...

  8. Python:网络爬虫入门

    Python:网络爬虫入门 这只是一个最最最基础版本的Python爬虫入门,代码是我两年前写的,最近两天没事翻出来再写(shui)一篇博客.就是爬取王者荣耀英雄的皮肤.然后备注也是写的十分的详细,所以 ...

  9. 爬虫利器BeautifulSoup之CSS选择器的基本使用

    1.Beautiful Soup简介 Beautiful Soup提供一些简单的.python式的函数用来处理导航.搜索.修改分析树等功能.它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简 ...

最新文章

  1. arraylist 初始化_Java二维数组和动态数组ArrayList 类
  2. 【Python教程】python函数后面有多个括号的作用
  3. 最新的一些开源face alignment及评价
  4. c语言around用法,KET基础语法:介词among和around的用法及例句
  5. mysql的日期和时间函数
  6. c语言数组取出特定字符串,C语言根据特定的符号分割字符串 如:字符串a,bbb,ccc-数组[a,bbb,ccc]...
  7. php:页面乱码的解决方法
  8. Java并发容器--ConcurrentLinkedQueue
  9. 脉冲耦合神经网络(PCNN)阅读笔记
  10. IDEA ideaIU点击无反应
  11. android MIT App Inventor 2 Beta 中文资料
  12. 《Scikit-Learn与TensorFlow机器学习实用指南》第13章 卷积神经网络
  13. 【比亚迪半导体】关联销售占比超过50%,关联销售毛利率是非关联销售的一倍
  14. uniapp简单的身份证照片(正反面)上传
  15. 人在江湖飘、如何不挨刀:开发篇
  16. 9 tlds tomcat_解决Tomcat7“At least one JAR was scanned for TLDs yet contained no TLDs”问题
  17. 基于深度学习的OCR技术
  18. pod install时出现 Unable to find a specification for `xxxx`
  19. 中国汽车座椅电机行业研究及战略研究报告(2022版)
  20. redis工具之redis-trib.rb

热门文章

  1. 双指针法(leetcode分类解题,C++代码详细注释)
  2. 不出来信号 quartus_男人一旦动了真情,会向你发出这6个“信号”不爱的人装不出来...
  3. SpringCloud(二) 服务注册到Eureka
  4. openfalcon架构及相关服务配置详解
  5. JS——阶乘的三种做法(正向逆向递归)
  6. SAP RFC user 最小权限
  7. 关于某些人和某些事的断想
  8. 用excel制作双层饼图_双层饼图,让你的工作更出彩
  9. linux cron 定时任务无效 /var/spool/cron/xxx
  10. AndroidStudio中Flutter打包APK