首页 > 解决方案 > 空白和选择器

问题描述

尝试使用 scrapy shell 上的选择器从网页中提取信息,但无法正常工作。我相信它的发生是因为类名中存在空格。知道出了什么问题吗?

我尝试了不同的语法,例如:

response.xpath('//p[@class="text-nnowrap hidden-xs"]').getall()

response.xpath('//p[@class="text-nnowrap hidden-xs"]/text()').get()

# what I type into my scrapy shell
response.css('div.offer-item-details').xpath('//p[@class="text-nowrap hidden-xs"]/text()').get()

# html code that I need to extract:
<p class="text-nowrap hidden-xs">Apartamento para arrendar: Olivais, Lisboa</p>

预期结果:Apartamento para arrendar:Olivais, Lisboa

实际结果: []

标签: pythonscrapy

解决方案


类部分中的空格表示有多个类,“text-nnowrap”类和“hidden-xs”类。为了通过 xpath 选择多个类,可以使用以下格式:

"//element[contains(@class, 'class1') and contains(@class, 'class2')]"

(从How to get html elements with multiple css classes 中获取

所以在你的例子中,我相信这会奏效。

response.xpath("//p[contains(@class, 'text-nnowrap') and contains(@class, 'hidden-xs')]").getall()

推荐阅读