我正在尝试使用 scrapy 从 Steam 中提取有关用户按游戏时间排序的前 10 名游戏的数据。但是,我无法输出每个游戏的名称,因为包含名称文本的 css 类有尾随空格。
我是 Python 和 Scrapy 库的新手,对于任何错误/格式不当,我深表歉意。
类和python代码如下:
准确的类代码
<div class="gameListRowItemName ellipsis ">Counter-Strike: Global Offensive</div> == $0
Scrapy 解析器代码
def parse(self, response):
some other code...
return {
some other code...
'gamename': response.css("div.gameListRowItemName.ellipsis ::text").extract()
}
我已确保包含“.ellipsis”以说明这是一个多类 css 定义,但是我找不到 css 类中尾随空格的含义。
我曾尝试使用“div.gameListRowItemName.ellipsis::text”的多种不同变体来尝试访问此文本(例如“.gameListRowItemName::text”),但蜘蛛只返回一个空白列表。
我认为爬虫中的其他任何地方都没有影响我的输出的问题,因为爬虫也会返回正确工作的用户名。
有谁知道我该如何解决这个问题?
最佳答案
如果您使用的是 css 选择器,您可以简单地传递第一个类名。
from scrapy.selector import Selector
response = Selector(text='<div class="gameListRowItemName ellipsis ">Counter-Strike: Global Offensive</div> == $0')
# with css selectors
print('Css:',response.css("div.gameListRowItemName::text").extract())
# with xpath selectors
print('Xpath:',response.xpath('//*[contains(@class,"gameListRowItemName")]/text()').extract())
输出
Css: ['Counter-Strike: Global Offensive']
Xpath: ['Counter-Strike: Global Offensive']
关于python - 无法使用类名包含尾随空格的 Scrapy 提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57779225/