网络爬虫CSS选择器详细讲解

  • 前言
  • 使用步骤
    • 1.解析的HTML代码
    • 2.逐层选择节点
    • 3.获取文本(string和get_text())
    • 4.获取节点的属性值
    • 5.选择单个和多个节点
    • 6.通过class和id选择节点(.class #id):
    • 7.选择属性值有多个值的节点(:
    • 8.选择指定的多个节点:
    • 9.选择包含属性的节点:
    • 10.根据属性值选择节点:
    • 11.嵌套选择:
  • 更多关于CSS选择器用法请参照该链接:
    • https://www.w3school.com.cn/cssref/css_selectors.asp
  • 网络爬虫速查表(多种选择器语法、request常用语法速查表下载):[https://blog.csdn.net/qq_20163065/article/details/123338900?spm=1001.2014.3001.5501](https://blog.csdn.net/qq_20163065/article/details/123338900?spm=1001.2014.3001.5501)

前言

Python拥有大量的解析库,比较常用的有Beautiful Soup、pyquery、parsel等,而它们共同特点是:大部分都支持CSS选择器,所以学会了CSS选择器的用法,就能快速利用各种解析方式提取数据,下面将介绍基于bs4解析库的CSS的常用方法。


使用步骤

1.解析的HTML代码

代码如下(示例):

html =
"""
<html>
<head><title>フィロソフィー</title>
</head>
<body><p class="philosophy"><a href="https://blog.csdn.net/qq_20163065?type=blog" class='marx' id="1">フィロソフィー的个人博客</a></p><p class="C-1 C-2">多个class值的节点</p><p class="C-1">通过.class选择节点</p><p class="p-1"></p><p class="p-2" value="marx"></p><h1><a id="D1">通过#id选择节点</a></h1>
</body>
</html>
"""
from bs4 import BeautifulSoup  #导入bs4库
soup = BeautifulSoup(html,features='lxml') #选择lxml解析器

2.逐层选择节点

逐层获取的节点:

print(soup.select('html head title')) #打印逐层获取的title节点
print(soup.select('.philosophy a'))

输出:

[<title>フィロソフィー</title>]
[<a class="marx" href="https://blog.csdn.net/qq_20163065?type=blog" id="1">フィロソフィー的个人博客</a>]

3.获取文本(string和get_text())

打印节点内的文本(两种方式):

print(soup.select('html head title')[0].string) #返回节点文本内容
print(soup.select('.philosophy a')[0].get_text()) #返回节点文本内容

输出:

フィロソフィー
フィロソフィー的个人博客

4.获取节点的属性值

print(soup.select('p')[0]['class'])  #获取第一个p节点的class属性值
print(soup.select('p a')[0]['href']) #获取第一个p节点下的a节点的href属性值

输出:

['philosophy']
https://blog.csdn.net/qq_20163065?type=blog

5.选择单个和多个节点

print(soup.select('p')) #选择所有的p节点,返回多个p节点的列表
print(soup.select('p')[1:])    #选择第二个p节点及后面的p节点
print(soup.select('p')[4])  #使用索引选择第五个p节点,返回单个节点

输出:

[<p class="philosophy">
<a class="marx" href="https://blog.csdn.net/qq_20163065?type=blog" id="1">フィロソフィー的个人博客</a>
</p>, <p class="C-1 C-2">多个属性值的节点</p>, <p class="C-1">通过.class选择节点</p>, <p class="p-1"></p>, <p class="p-2" value="marx"></p>]
[<p class="C-1 C-2">多个属性值的节点</p>,<p class="C-1">通过.class选择节点</p>,<p class="p-1"></p>,<p class="p-2" value="marx"></p>]
<p class="p-2" value="marx"></p>

6.通过class和id选择节点(.class #id):

通过class属性和id属性选择:

print(soup.select('.C-1'))   #选择class="C-1"节点
print(soup.select('h1 #D1')) #选择h1节点下的id="D1"的节点

输出:

[<p class="C-1 C-2">多个属性值的节点</p>, <p class="C-1">通过.class选择节点</p>]
[<a id="D1">通过#id选择节点</a>]

7.选择属性值有多个值的节点(:

选择class属性值为C-1和C-2的节点:

print(soup.select('.C-1.C-2'))

输出:

[<p class="C-1 C-2">多个class值的节点</p>]

8.选择指定的多个节点:

选择class="p-1"的节点和class="p-2"的节点:

print(soup.select('.p-1,.p-2')) #返回包含指定的两个节点的列表

输出:

[<p class="p-1"></p>, <p class="p-2" value="marx"></p>]

9.选择包含属性的节点:

选择class=“philosopy“的节点下 包含href属性的节点

soup.select('.philosophy a[href]')

输出:

[<a class="marx" href="https://blog.csdn.net/qq_20163065?type=blog" id="1">フィロソフィー的个人博客</a>]

10.根据属性值选择节点:

选择value=“marx”的 节点

soup.select('p[value="marx"]')

输出:

[<p class="p-2" value="marx"></p>]

11.嵌套选择:

select支持嵌套选择节点

for p in soup.select('p'):print(p.select('a'))

输出:

[<a class="marx" href="https://blog.csdn.net/qq_20163065?type=blog" id="1">フィロソフィー的个人博客</a>]
[]
[]
[]
[]

更多关于CSS选择器用法请参照该链接:

https://www.w3school.com.cn/cssref/css_selectors.asp

网络爬虫速查表(多种选择器语法、request常用语法速查表下载):https://blog.csdn.net/qq_20163065/article/details/123338900?spm=1001.2014.3001.5501

网络爬虫CSS选择器详细讲解相关推荐

  1. python爬虫哪个选择器好用_Python网络爬虫四大选择器用法原理总结

    前几天小编连续写了四篇关于Python选择器的文章,分别用正则表达式.BeautifulSoup.Xpath.CSS选择器分别抓取京东网的商品信息.今天小编来给大家总结一下这四个选择器,让大家更加深刻 ...

  2. Python3 Requests+BS4网络爬虫:最详细零基础的获取百度快照链接爬虫教程(思路篇)

    Hello,大家好呀,五一劳动节快乐呀!最近在后台接到一个粉丝的私信说怎么爬取百度快照.正好五一有一段时间休息,咱们就来水一篇文章,顺便来巩固巩固基础的知识. 注意注意!这是思路篇,没有代码!只有思路 ...

  3. php 正则表达式获取html标签内容_总结Python网络爬虫四大选择器(正则表达式、BS4、Xpath、CSS)...

    今天来给大家总结一下这四个选择器,让大家更加深刻的理解和熟悉Python选择器. python高薪就业(视频.学习路线.免费获取)​shimo.im 一.正则表达式 正则表达式为我们提供了抓取数据的快 ...

  4. 网络爬虫python实例视频-Python网络爬虫实例教程 视频讲解版

    章网络爬虫概述1 1.1认识网络爬虫1 1.1.1网络爬虫的含义1 1.1.2网络爬虫的主要类型2 1.1.3简单网络爬虫的架构3 1.1.4网络爬虫的应用场景3 1.2Python网络爬虫技术概况4 ...

  5. Python爬虫史上超详细讲解(零基础入门,老年人都看的懂)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/bookssea/article/det ...

  6. CSS选择器详细介绍

    CSS3 基本选择器 * E .class #id EF E>F E+F E[attribute] E[attribute=value] E[attribute~=value] E[attrib ...

  7. 爬虫css选择器,选择属性

    有一个网页是这样的,我向提取onclick里的值. 这时用attr, 如下代码: if selector.css(".con10 a.but_alert").get():id = ...

  8. CSS伪类选择器详细讲解

    前言 伪类选择器在CSS中起到的作用可以说是至关重要的,如果CSS没有伪类选择器,有很多效果都要借助js来完成,这样不仅代码量增加,维护起来你难度也大.这样程序员的工作量大,也违背了CSS诞生的作用, ...

  9. python爬虫详细步骤-Python爬虫入门,详细讲解爬虫过程

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于凌晨安全,作者 MoLing 1. 爬虫就是模拟浏览器抓取东西,爬虫 ...

最新文章

  1. 零基础学Java大数据难不难
  2. SpringBoot - 构建监控体系02_定义度量指标和 Actuator 端点
  3. CSS 实现加载动画之四-圆点旋转
  4. 八皇后(洛谷-P1219)
  5. 【英语学习】【English L06】U01 Breakfast L5 Continental and English
  6. java第十版基础篇答案第九章_《Java语言程序设计》(基础篇原书第10版)第九章复习题答案...
  7. AngularJS app.run()文档?
  8. ViT (Vision Transformer) ---- Transformer Model(2)
  9. UPD(user datagram protocol)
  10. 周记0053:0054
  11. linux系统部署ffmpeg视频转码环境及使用方法
  12. mysql secure file_mysql secure-file-priv选项问题的解决方法
  13. transition天坑
  14. 深度学习手记(八)之PTB实现LSTM模型
  15. 烟台有线电视频率与节目表
  16. 九日集训(每日打卡)第六天
  17. ZEGO即构科技荣获36氪【WISE2020中国新经济之王最具影响力企业】
  18. LTE射频拉远单元数字中频方案(六)
  19. 装系统提示:Error1962:No operating system found.解决办法在此
  20. DAY4-仿真 Rviz URDF集成Rviz基本流程和URDF语法

热门文章

  1. Vector产品手册中文版2019.pdf下载地址
  2. C++语言篇 字符数组与字符串输入
  3. oracle用什么用户安装,Oracle 12cR2 安装示例用户(Sample Schemas)
  4. Hacking WiFi 的第二部分
  5. 京东卖点图怎么修改,批量修改卖点图教程
  6. OSChina 周二乱弹 ——桃花潭水深千尺,淹死产品行不行?
  7. OpenStack安装教程
  8. java 方法名相同_Java的方法的重载 :方法名相同,参数类型不同 - Break易站
  9. Mediaplay:Android后台同时播放多个音频文件第二弹:控制音频音量
  10. 打造工业互联网平台为传统制造企业转型升级赋能