📅  最后修改于: 2023-12-03 15:05:06.019000             🧑  作者: Mango
在使用 Scrapy 爬虫时,我们通常会获取 HTML 标签中的文本信息,但有些网站会使用自定义的标签,比如 <event>
或 <title>
,这些标签在 HTML 中并不常见。所以在 Scrapy 中,我们需要对这些自定义标签进行特殊处理。
在 Scrapy 中,我们可以使用 response.xpath()
方法来定位 HTML 标签。但是对于自定义标签,我们需要使用自定义的处理器来将其转换为有效的 XPath 表达式。
例如,假设我们要获取以下 HTML 中的自定义标签:
<html>
<body>
<event>
<title>Event Name</title>
<location>Event Location</location>
<date>Event Date</date>
</event>
</body>
</html>
我们可以在 Scrapy 中使用以下代码来获取自定义标签:
response.xpath('//event/title/text()').get()
这段代码将返回 "Event Name"。
有时候,一个网站会使用大量的自定义标签来表示不同的信息。如果我们想要重复使用这些自定义标签,我们可以在 Scrapy 中定义自定义标签。
例如,假设我们要定义一个 <product>
标签,包含以下信息:
<product>
<name>Product Name</name>
<price>100.0</price>
<description>Product Description</description>
</product>
我们可以在 Scrapy 中定义一个自定义标签处理器,将其转换为有效的 XPath 表达式:
from scrapy.selector import Selector
class ProductSelector(Selector):
def product(self):
return self.xpath('//product')
def name(self):
return self.xpath('//product/name/text()').get()
def price(self):
return self.xpath('//product/price/text()').get()
def description(self):
return self.xpath('//product/description/text()').get()
这样我们就可以使用以下代码来获取 <product>
中的文本信息:
product = response.product()
name = product.name()
price = product.price()
description = product.description()
在 Scrapy 中获取自定义标签需要特殊处理,我们可以将其转换为有效的 XPath 表达式,或者定义自定义标签处理器来重复使用这些自定义标签。