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

Adi*_*rma 4 python scrapy web-scraping

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

例子:

<div class="info">
    <span class="price sale">text1</span>
    <span class="title ng-binding">some text</span>
</div>
Run Code Online (Sandbox Code Playgroud)

当我使用代码时:

response.xpath("//span[contains(@class,'price sale')]/text()").extract()
Run Code Online (Sandbox Code Playgroud)

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

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

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

Uma*_*air 5

您要查找的表达式是:

//span[contains(@class, 'title') and contains(@class, 'ng-binding')]
Run Code Online (Sandbox Code Playgroud)

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

http://xpathvisualizer.codeplex.com/

或者用 CSS 试试

response.css("span.title.ng-binding")
Run Code Online (Sandbox Code Playgroud)

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