python - 无法使用类名包含尾随空格的 Scrapy 提取数据

标签 python html css scrapy

我正在尝试使用 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']

了解 css和 xpath 选择器 xpath在 w3schools 上。

关于python - 无法使用类名包含尾随空格的 Scrapy 提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57779225/

相关文章:

python - 内存错误 : out of memory

python - 如何对 Pandas 数据透视表中的值进行排序?

javascript - Jquery,如果 div 存在但仅来自列表中的该元素,则更改边框

javascript - 如何获取选中复选框的数量(计数)?

php - 社交引擎无法检查 html

css - 前端的 CKEDitor 5 CSS 未应用

Python - 将日期的字符串表示形式转换为 ISO 8601

python - 同步数据库模型 openshift

javascript - 如何从html内容中获取div文本

html - Markdown 中的内联 CSS