空格和选择器

时间:2019-05-16 17:05:52

标签: python scrapy

尝试在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>

预期结果:阿伦达公寓:里斯本的奥利瓦伊斯

实际结果:[]

2 个答案:

答案 0 :(得分:2)

class部分中的空白表示存在多个类,即“ 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()

答案 1 :(得分:1)

在这种情况下,我更喜欢使用css选择器,因为它的语法很简单:
response.css("p.text-nowrap.hidden-xs::text")

当您观察html代码时,谷歌浏览器开发人员工具也会显示css选择器
这使得刮板开发更加容易 google developer tools