【css提取数据】


提取数据方法有很多,今天就来看看css如何提取数据


一、了解网页代码格式

想用css选择器提取数据,首先得了解网页html数据结构,如图
在这里插入图片描述

可以清楚的知道网页数据的布局,而相信有很多人看过相关资料,知道有父子标签,兄弟标签,爷孙标签等,下面先来讲一讲标签之间的的关系。

二、标签之间的关系

1.引入库

代码如下(示例):

 """
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>标签选择器</title>
</head>
<style>
	p{
		color: #f00;
		font-size: 16px;
	}
</style>
<body>
	<p>css标签选择器的介绍</p>
	<p>标签选择器、类选择器、ID选择器</p>
	<a href="https://www.baidu.com">百度一下</a>
	<span> 我是一个span标签</span>
</body>
</html>
"""

父子标签:顾名思义,父亲底下就是儿子,如上方代码中
在这里插入图片描述
head标签与meta和title标签均为父子标签
兄弟标签:meta和title为兄弟标签
主要理解这两个就可以了,至于爷孙标签,不过是在儿子下还有标签。
最简单的判断级别方法,看缩进,同级别缩进相同。

三.css选择器

1.了解解析对象,导入相关模块

想要用css,xpath解析数据,数据必须是网页类型数据,而re则是解析文本数据类型的。
所以,在提取出文本数据的情况下,想要用css来解析,就必须格式转化。

import parsel  # 第三方模块, pip install parsel  封装了css选择器, xpath, 正则
html = """
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>标签选择器</title>
</head>
<style>
	p{
		color: #f00;
		font-size: 16px;
	}
</style>
<body>
	<p>css标签选择器的介绍</p>
	<p>标签选择器、类选择器、ID选择器</p>
	<a href="https://www.baidu.com">百度一下</a>
	<span> 我是一个span标签</span>
</body>
</html>
"""
selector = parsel.Selector(html) #转换数据对象, 对象才具有数据解析方法

# 根据语法解析<提取>数据,  得到的结果是一个列表, 列表里面是对象
# get()  extract_first() 从selector对象里面提取第一个数据, 返回字符串类型
# getall() extract() 从selector对象里面提取所有数据,  返回列表类型

2.标签选择器

尖括号中第一个,例如html、span、p、div、a、img等等

import parsel  
html = """
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>标签选择器</title>
</head>
<style>
	p{
		color: #f00;
		font-size: 16px;
	}
</style>
<body>
	<p>css标签选择器的介绍</p>
	<p>标签选择器、类选择器、ID选择器</p>
	<a href="https://www.baidu.com">百度一下</a>
	<span> 我是一个span标签</span>
</body>
</html>
"""
selector  = parsel.Selector(html)
#  span 标签选择器, 直接给标签的名字
result = selector.css('span').extract_first() # 获取符合要求的第一个数据
print(result)

result2 = selector.css('span').extract() # 获取符合要求的所有数据,返回一个列表
print(result2)

3.类选择器

html = """
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>标签选择器</title>
</head>
<style>
	p{
		color: #f00;
		font-size: 16px;
	}
</style>
<body>
	<p class="top">css标签选择器的介绍</p>
	<p class="top">标签选择器、类选择器、ID选择器</p>
	<a class="top" href="https://www.baidu.com">百度一下</a>
	<span> 我是一个span标签</span>
</body>
</html>
"""
import parsel 

selector = parsel.Selector(html)

# 只要标签具有 class 类属性, 就可以使用类选择器进行定位
# . 提取标签的类属性<>
# 如果多个标签有相同的类属性的值, 那么会全部提取到
# 类选择器就是通过标签的类属性 (class属性), 精确定位到想要的标签
result = selector.css('.top').getall()
print(result)

4.id选择器

html = """
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>标签选择器</title>
</head>
<style>
	p{
		color: #f00;
		font-size: 16px;
	}
</style>
<body>
	<p class="top" id="contend">css标签选择器的介绍</p>
	<p class="top" id="contend">标签选择器、类选择器、ID选择器</p>
	<a class="top" href="https://www.baidu.com">百度一下</a>
	<span> 我是一个span标签</span>
</body>
</html>
"""
import parsel 
selector = parsel.Selector(html)

# id 一般在html数据中是唯一的
# '#' 使用id选择器定位标签
# 具有相同的id属性的比起爱你都会被提取
# contend 指得是id属性值
result = selector.css('#contend').getall()
print(result)

5.组合选择器

html = """
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>标签选择器</title>
</head>
<style>
	p{
		color: #f00;
		font-size: 16px;
	}
</style>
<body>
	<p class="top" id="contend">css标签选择器的介绍</p>
	<p class="top">标签选择器、类选择器、ID选择器</p>
	<a class="top" href="https://www.baidu.com">百度一下</a>
	<span> 我是一个span标签</span>
</body>
</html>
"""
import parsel 
selector = parsel.Selector(html)

# 组合选择器使用, 标签选择器放最前, 其他选择器随表放
result = selector.css('p.top#contend').getall()  # 加了约束
print(result)
result = selector.css('.topp#contend').getall()  # 不能这样写
print(result)

6.伪类选择器

可以用 : 指定选择想要提取的第几个标签。
在这里插入图片描述

html = """
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>标签选择器</title>
</head>
<style>
	p{
		color: #f00;
		font-size: 16px;
	}
</style>
<body>
	<p class="top" id="content">css标签选择器的介绍</p>
	<p class="top" id="content">标签选择器、类选择器、ID选择器</p>
	<a href="https://www.baidu.com">百度一下</a>
	<span> 我是一个span标签</span>
</body>
</html>
"""
import parsel
selector = parsel.Selector(html)
p = selector.css('p:nth-child(2)').getall() # 提取第二个p标签
print(p)

7.属性提取器

可以用 :: 提取标签包含的属性。

html = """
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>标签选择器</title>
</head>
<style>
	p{
		color: #f00;
		font-size: 16px;
	}
</style>
<body>
	<p class="top1" id="contend">css标签选择器的介绍</p>
	<p class="top2">标签选择器、类选择器、ID选择器</p>
	<a class="top" href="https://www.baidu.com">百度一下</a>
	<span> 我是一个span标签</span>
</body>
</html>
"""
import parsel  # 第三方模块, pip install parsel  封装了css选择器, xpath, 正则

selector = parsel.Selector(html)

# :: 表示属性提取器, 当我们定位到标签以后想要去标签包含的文本内容或者某个属性值吗就需要使用属性提取器
# text 表示取标签包含的文本
p = selector.css('p::text').getall()
print(p)


# ::attr(class)  表示提取标签下的属性对应的值
# class 是属性名, 是根目属性名字取值的
p = selector.css('p::attr(class)').getall()
print(p)

#获取<a class="top" href="https://www.baidu.com">百度一下</a>里面的url
href = selector.css('a::attr(href)').getall() # 因为此处只有一个,我就用get(),而没有用getall(),否则会返回一个列表
print(href)

总结

在这里插入图片描述
这里附上相关简便用法,有条件的来个双击么么哒。

了解更多点击一起讨论呐~

在这里插入图片描述

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
回答: 要实现CSS单行文本溢出显示省略号,可以使用以下代码: ``` <div class="wrap"> <div class="content">测试数据css单行文本超出长度显示省略号--明天也要努力</div> <div class="content text-ellipsis">测试数据css单行文本超出长度显示省略号--明天也要努力</div> </div> <style> .wrap { width: 200px; height: 200px; } .content { width: 100%; margin-top: 6px; } .text-ellipsis { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; -o-text-overflow: ellipsis; } </style> ``` 以上代码中,使用了`overflow: hidden;`来隐藏超出的部分,然后使用`text-overflow: ellipsis;`当文本超出时显示为省略号。同时,通过设置`white-space: nowrap;`来限制文本不换行。这样就可以实现单行文本溢出显示省略号的效果。 #### 引用[.reference_title] - *1* *2* [CSS中 设置( 单行、多行 )超出显示省略号](https://blog.csdn.net/ZYS10000/article/details/127607497)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [CSS实现单行、多行文本溢出显示省略号(…)](https://blog.csdn.net/qq_43000315/article/details/125313649)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ฅ˙Ꙫ˙ฅ599

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

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

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

打赏作者

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

抵扣说明:

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

余额充值