Scrapy与分布式开发(2.4):bs4+css基本指令和提取方法详解

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时)。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九月镇灵将

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值