我是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()
我得到一个空列表。为什么会发生这种情况以及如何处理?
答案 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()
此代码应返回您要查找的文本。