bs4+css基本指令和提取方法详解
CSS简介
CSS选择器是网页开发中不可或缺的工具,它们让我们能够精确地定位和选择HTML文档中的元素。在爬虫领域多用于从网页中提取和解析数据。本教程将结合网上教程,提供一份详细的CSS选择器使用指南,并深入探讨更多的指令和API。
基本指令和提取方法
当从Python的角度考虑CSS的基本语法时,我们通常是在使用像BeautifulSoup或Scrapy这样的库来解析HTML文档,并从中提取或修改CSS样式。在Python中,CSS选择器的使用通常与这些库的选择器方法相结合,以定位HTML元素。以下是一个关于CSS基本语法、说明和案例的表格,这些案例假设你正在使用Python的某个库来处理HTML和CSS。
| 语法 | 说明 | 案例 |
|---|---|---|
tagname |
选择指定HTML标签的元素。 | soup.select('div') 选择所有的<div>元素。 |
.classname |
选择具有指定CSS类的元素。 | soup.select('.my-class') 选择所有具有my-class类的元素。 |
#idname |
选择具有指定ID的元素。 | soup.select('#my-id') 选择具有my-idID的元素。 |
element element |
选择后代元素,即第一个元素内部的所有第二个元素。 | soup.select('div p') 选择所有在<div>元素内部的<p>元素。 |
element > element |
选择子元素,即第一个元素的直接子元素。 | soup.select('ul > li') 选择所有直接作为<ul>元素子元素的<li>元素。 |
element + element |
选择紧接在第一个元素之后的下一个同级元素。 | soup.select('h1 + p') 选择所有紧接在<h1>元素之后的<p>元素。 |
element ~ element |
选择第一个元素之后的所有同级元素。 | soup.select('div ~ p') 选择所有在<div>元素之后的所有<p>元素。 |
:nth-child(n) |
选择其父元素的第n个子元素。 | soup.select('div:nth-child(2)') 选择所有作为其父元素的第二个子元素的<div>元素。 |
:nth-last-child(n) |
选择其父元素的倒数第n个子元素。 | soup.select('div:nth-last-child(1)') 选择所有作为其父元素的最后一个子元素的<div>元素。 |
[attribute] |
选择具有指定属性的元素。 | soup.select('[href]') 选择所有具有href属性的元素。 |
[attribute=value] |
选择具有指定属性值的元素。 | soup.select('[target="_blank"]') 选择所有target属性值为_blank的元素。 |
[attribute^=value] |
选择属性值以指定字符串开头的元素。 | soup.select('[href^="https"]') 选择所有href属性值以https开头的元素。 |
[attribute$=value] |
选择属性值以指定字符串结尾的元素。 | soup.select('[href$=".pdf"]') 选择所有href属性值以.pdf结尾的元素。 |
[attribute*=value] |
选择属性值包含指定字符串的元素。 | soup.select('[href*="example"]') 选择所有href属性值包含example的元素。 |
:contains(text) |
选择包含特定文本的元素。 | soup.select('div:contains("Hello")') 选择所有<div>元素,其文本内容包含"Hello"。 |
:has(selector) |
选择包含匹配选择器的元素的元素。 | soup.select('div:has(p)') 选择所有包含<p>元素的<div>元素。 |
:not(selector) |
排除匹配选择器的元素。 | soup.select('div:not(.ignore)') 选择所有<div>元素,但不包括那些具有ignore类的元素。 |
:input |
选择所有输入元素,如<input>, <textarea>, <select>, 和 <button>。 |
soup.select(':input') 选择页面上的所有输入元素。 |
:checked |
选择所有被选中的复选框和单选按钮。 | soup.select('input[type="checkbox"]:checked') 选择所有被选中的复选框。 |
:disabled |
选择所有禁用的输入元素。 | soup.select('input:disabled') 选择所有禁用的输入元素。 |
:enabled |
选择所有启用的输入元素。 | soup.select('input:enabled') 选择所有启用的输入元素。 |
:first-child |
选择其父元素的第一个子元素。 | soup.select('div:first-child') 选择所有作为其父元素的第一个子元素的<div>元素。 |
:last-child |
选择其父元素的最后一个子元素。 | soup.select('div:last-child') 选择所有作为其父元素的最后一个子元素的<div>元素。 |
:first-of-type |
选择其父元素中第一个指定类型的子元素。 | soup.select('p:first-of-type') 选择每个父元素中的第一个<p>元素。 |
:last-of-type |
选择其父元素中最后一个指定类型的子元素。 | soup.select('p:last-of-type') 选择每个父元素中的最后一个<p>元素。 |
:only-child |
选择那些是其父元素的唯一子元素的元素。 | soup.select('div:only-child') 选择所有是其父元素的唯一子元素的<div>元素。 |
:only-of-type |
选择那些是其父元素中唯一指定类型的子元素的元素。 | soup.select('p:only-of-type') 选择所有是其父元素中唯一<p>元素的元素。 |
:empty |
选择没有子元素(包括文本节点)的元素。 | soup.select('div:empty') 选择所有空的<div>元素。 |
:root |
选择文档的根元素。在HTML中,这通常是<html>元素。 |
soup.select(':root') 选择文档的根元素。 |
:lang(language) |
选择具有指定lang属性的元素。 |
soup.select('p:lang(en)') 选择所有<p>元素,其lang属性值为en。 |
:focus |
选择当前获取焦点的元素。 | soup.select(':focus') 选择当前获取焦点的元素(注意:这通常在浏览器环境中有效,而不是在Python解析HTML时)。 |
:hover |
选择用户鼠标悬停在其上的元素。 | soup.select(':hover') 选择用户鼠标当前悬停在其上的元素(注意:这通常在浏览器环境中有效,而不是在Python解析HTML时)。 |

最低0.47元/天 解锁文章
2217

被折叠的 条评论
为什么被折叠?



