Scrapy selector介绍

本文详细介绍了Scrapy选择器的使用,包括构造选择器、使用XPath和CSS选择器、正则表达式配合选择器、相对XPath以及EXSLT扩展。Scrapy选择器基于lxml库,提供了一种高效、简洁的方式来从HTML和XML文档中提取数据。通过示例展示了如何处理嵌套选择器、使用正则表达式提取数据,并提供了XPath和CSS选择器的实用技巧。
摘要由CSDN通过智能技术生成

从HTML源文件库中解析数据通常有以下常用的库可以使用:

  • BeautifulSoup是在程序员间非常流行的网页分析库,它基于HTML代码的结构来构造一个Python对象, 对不良标记的处理也非常合理,但它有一个缺点:慢。
  • lxml是一个基于 ElementTree (不是Python标准库的一部分)的python化的XML解析库(也可以解析HTML)。

Scrapy提取数据有自己的一套机制。它们被称作选择器(seletors),因为他们通过特定的 XPath 或者 CSS 表达式来“选择” HTML文件中的某个部分。XPath 是一门用来在XML文件中选择节点的语言,也可以用在HTML上。 CSS 是一门将HTML文档样式化的语言。选择器由它定义,并与特定的HTML元素的样式相关连。

Scrapy选择器构建于 lxml 库之上,这意味着它们在速度和解析准确性上非常相似。不同于 lxml API的臃肿,该API短小而简洁。这是因为 lxml 库除了用来选择标记化文档外,还可以用到许多任务上。

1. Using selectors

1.1 Constructing selectors

Scrapy selectors是Selector类的实例,通过传入text或TextResponse来创建,它自动根据传入的类型选择解析规则(XML or HTML):

from scrapy.selecor import Selector
from scrapy.http import HtmlResponse

从text构建:

body = '<html><body><span>good</span></body></html>'
Selector(text=body).xpath('//span/text()').extract()

从response构建:

response = HtmlResponse(url='http://example.com', body=body)
Selector(response=response).xpath('//span/text()').extract()

response对象以 .selector 属性提供了一个selector, 您可以随时使用该快捷方法:

response.selector.xpath('//span/text()').extract()
1.2 Using selectors

以下面的文档来解释如何使用选择器:

<html>
<head>
  <base href='http://example.com/' />
  <title>Example website</title>
</head>
<body>
  <div id='images'>
   <a href='image1.html'>Name: My image 1 <br /><img src='image1_thumb.jpg' /></a>
   <a href='image2.html'>Name: My image 2 <br /><img src='image2_thumb.jpg' /></a>
   <a href='image3.html'>Name: My image 3 <br /><img src='image3_thumb.jpg' /></a>
   <a href='image4.html'>Name: My image 4 <br /><img src='image4_thumb.jpg' />
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值