python - 空白和选择器
问题描述
尝试使用 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
实际结果: []
解决方案
类部分中的空格表示有多个类,“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()
推荐阅读
- excel - 如何从一个表的列中提取所有唯一值到另一个表的列?
- python - 如何设置需要客户端功能的命令(请阅读说明)
- javascript - 如何从 jQuery 转换为 fetch API
- r - 在同一行的第二行汇总并粘贴值
- javascript - 当应用程序聚焦在启动器中时,如何在 LG TV WebOS 预览区显示内容?
- javascript - 我在下一个 js 网站中使用动态路由。但是访问这些文件的页面无法调用事件处理程序
- ruby-on-rails - Rails 标题化导致“不兼容的编码正则表达式匹配”
- angularjs - 如何将包发布到 Bower
- google-chrome-extension - 从 Chrome 90 开始,无法修改 X-Frame-Options 的响应标头
- sql - 同一删除查询上的页面级死锁