【发布时间】:2019-10-04 00:28:31
【问题描述】:
尝试使用 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
实际结果:[]
【问题讨论】:
-
类名中实际上没有空格。在 html 中,您可以通过在 class 属性中用空格分隔它们来为 html 元素提供多个类。这意味着
有两个类:text-nowrap 和 hidden-xs。这可能会帮助您进一步调试问题。我自己快速搜索导致我找到以下解决方案,我自己没有测试:stackoverflow.com/a/3881148/6511985
-
首先检查页面是否没有使用 JavaScript 向 HTML 添加元素。 Scrapy 无法运行 JavaScript,并且您的 HTML 可能与您预期的不同。
-
感谢@StephanSchrijver 的帮助。这就是重点:类名没有空格。现在我需要知道如何使用“response.css()”选择器来提取包含空格的类名。做我的研究。谢谢!