无法使用包含空格和连字符的类名称的scrapy提取数据

时间:2017-08-08 06:51:52

标签: python web-scraping scrapy scrapy-spider

我是scrapy的新手,我必须从具有多个类名的标签中提取文本,并且类名包含空格和连字符。

示例:

<div class="info>
    <span class="price sale">text1</span>
    <span class="title ng-binding">some text</span>
</div>

当我使用代码时:

response.xpath("//span[contains(@class,'price sale')]/text()").extract()

我能够获得text1但是当我使用时:

response.xpath("//span[contains(@class,'title ng-binding')]/text()").extract()

我得到一个空列表。为什么会发生这种情况以及如何处理?

2 个答案:

答案 0 :(得分:3)

您正在寻找的表达方式是:

//span[contains(@class, 'title') and contains(@class, 'ng-binding')]

我强烈建议使用XPath可视化工具,它可以帮助您轻松调试xpath表达式。它可以在这里找到:

http://xpathvisualizer.codeplex.com/

或者使用CSS尝试

response.css("span.title.ng-binding")

或者有ng-binding的元素有可能通过Javascript / Ajax加载,因此不包含在初始服务器响应中。

答案 1 :(得分:0)

您可以将空格替换为“。”在使用response.css()的代码中。 您可以尝试以下方法:

response.css("span.title.ng-binding::text").extract()

此代码应返回您要查找的文本。