Scrapy(三):使用Selector提取数据(三)

这个章节介绍除Xpath外另一种常用的数据提取方式: CSS选择器
CSS即层叠样式表,其选择器是一种用来确定HTML文档中某部分位置的语言,相对于Xpath更简单一些,但功能不如xpath强大。
通过以下例子展示css选择器的使用。

from scrapy.selector import Selector
from scrapy.http import HtmlResponse

body = """
<!DOCTYPE html>
<html>
	<head>
		<title>lianxi</title>
	</head>
	<body>
		<div id="images-1" style="width: 1230px;">
			<a href="image1.html">Name:Image1</br><img src="image1.jpg"></a>
			<a href="image2.html">Name:Image2</br><img src="image2.jpg"></a>
			<a href="image3.html">Name:Image3</br><img src="image3.jpg"></a>
		</div>
		<div id="images-2" class="small">
			<a href="image4.html">Name:Image4</br><img src="image4.jpg"></a>
			<a href="image5.html">Name:Image5</br><img src="image5.jpg"></a>
		</div>
	</body> 
</html>
"""
# 创建一个HTML文档并构造一个HTMLresponse对象
response = HtmlResponse(url="http://www.example.com", body=body, encoding="utf-8")
# 1:选取所有E元素
print(response.css("img"))
# 2:选取所有E1和E2元素
print(response.css("base, title"))
# 3:选取E1后代元素中的E2元素
print(response.css("div img"))
# 4:选取E1子元素中的E2元素
print(response.css("body>div"))
# 5:选取包含ATTR属性的元素
# 选中包含style属性的元素
print(response.css("[style]"))
# 6:选取包含ATTR属性且值为value的元素
# 选取属性id为images-1的元素
print(response.css("[id=images-1]"))
# 7:nth-child(n):选取E元素,且该元素必须是其父元素的第n个子元素
# 选取每个div中的第一个a
print(response.css("div>a:nth-child(1)"))
# 选取第二个div中的第一个a
print(response.css("div:nth-child(2)>a:nth-child(1)"))
# 8:E:first-child(): 选中E元素,该元素必须是其父元素的第一个元素
#  E:last-child(): 选中E元素,该元素必须是其父元素的倒数第一个元素
# 选取第一个div的最后一个a
print(response.css("div:first-child>a:last-child"))
# 9:选取E元素的文本节点
# 选取所有的a文本
print(response.css("a::text"))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Enougme

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

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

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

打赏作者

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

抵扣说明:

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

余额充值