网络爬虫CSS选择器详细讲解
网络爬虫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选择器详细讲解相关推荐
- python爬虫哪个选择器好用_Python网络爬虫四大选择器用法原理总结
前几天小编连续写了四篇关于Python选择器的文章,分别用正则表达式.BeautifulSoup.Xpath.CSS选择器分别抓取京东网的商品信息.今天小编来给大家总结一下这四个选择器,让大家更加深刻 ...
- Python3 Requests+BS4网络爬虫:最详细零基础的获取百度快照链接爬虫教程(思路篇)
Hello,大家好呀,五一劳动节快乐呀!最近在后台接到一个粉丝的私信说怎么爬取百度快照.正好五一有一段时间休息,咱们就来水一篇文章,顺便来巩固巩固基础的知识. 注意注意!这是思路篇,没有代码!只有思路 ...
- php 正则表达式获取html标签内容_总结Python网络爬虫四大选择器(正则表达式、BS4、Xpath、CSS)...
今天来给大家总结一下这四个选择器,让大家更加深刻的理解和熟悉Python选择器. python高薪就业(视频.学习路线.免费获取)shimo.im 一.正则表达式 正则表达式为我们提供了抓取数据的快 ...
- 网络爬虫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 ...
- Python爬虫史上超详细讲解(零基础入门,老年人都看的懂)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/bookssea/article/det ...
- CSS选择器详细介绍
CSS3 基本选择器 * E .class #id EF E>F E+F E[attribute] E[attribute=value] E[attribute~=value] E[attrib ...
- 爬虫css选择器,选择属性
有一个网页是这样的,我向提取onclick里的值. 这时用attr, 如下代码: if selector.css(".con10 a.but_alert").get():id = ...
- CSS伪类选择器详细讲解
前言 伪类选择器在CSS中起到的作用可以说是至关重要的,如果CSS没有伪类选择器,有很多效果都要借助js来完成,这样不仅代码量增加,维护起来你难度也大.这样程序员的工作量大,也违背了CSS诞生的作用, ...
- python爬虫详细步骤-Python爬虫入门,详细讲解爬虫过程
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于凌晨安全,作者 MoLing 1. 爬虫就是模拟浏览器抓取东西,爬虫 ...
最新文章
- 零基础学Java大数据难不难
- SpringBoot - 构建监控体系02_定义度量指标和 Actuator 端点
- CSS 实现加载动画之四-圆点旋转
- 八皇后(洛谷-P1219)
- 【英语学习】【English L06】U01 Breakfast L5 Continental and English
- java第十版基础篇答案第九章_《Java语言程序设计》(基础篇原书第10版)第九章复习题答案...
- AngularJS app.run()文档?
- ViT (Vision Transformer) ---- Transformer Model(2)
- UPD(user datagram protocol)
- 周记0053:0054
- linux系统部署ffmpeg视频转码环境及使用方法
- mysql secure file_mysql secure-file-priv选项问题的解决方法
- transition天坑
- 深度学习手记(八)之PTB实现LSTM模型
- 烟台有线电视频率与节目表
- 九日集训(每日打卡)第六天
- ZEGO即构科技荣获36氪【WISE2020中国新经济之王最具影响力企业】
- LTE射频拉远单元数字中频方案(六)
- 装系统提示:Error1962:No operating system found.解决办法在此
- DAY4-仿真 Rviz URDF集成Rviz基本流程和URDF语法
热门文章
- Vector产品手册中文版2019.pdf下载地址
- C++语言篇 字符数组与字符串输入
- oracle用什么用户安装,Oracle 12cR2 安装示例用户(Sample Schemas)
- Hacking WiFi 的第二部分
- 京东卖点图怎么修改,批量修改卖点图教程
- OSChina 周二乱弹 ——桃花潭水深千尺,淹死产品行不行?
- OpenStack安装教程
- java 方法名相同_Java的方法的重载 :方法名相同,参数类型不同 - Break易站
- Mediaplay:Android后台同时播放多个音频文件第二弹:控制音频音量
- 打造工业互联网平台为传统制造企业转型升级赋能