【问题标题】:Scraping a table (CSS build) from online store with Python Scrapy Pandas使用 Python Scrapy Pandas 从在线商店抓取表格(CSS 构建)
【发布时间】:2021-03-23 01:07:14
【问题描述】:

我尝试从在线商店购买一张干净的桌子 - “Technische Daten”部分 - https://www.coolblue.de/produkt/863600/aeg-l6fb64470.html#product-specifications

我使用的 CSS 选择器是section.js-specifications-section

response.css('section.js-specifications-section').extract()

是否可以将这些数据提取为简单的 HTML(未格式化)表格?

【问题讨论】:

    标签: python css pandas scrapy screen-scraping


    【解决方案1】:

    您需要遍历表中的每个规范项。这是实现它的方法

    data = {}
    for spec in response.css('section.js-specifications-section dl'):
        key = ''.join(spec.css('dt ::text').extract()).strip()
        val = ''.join(spec.css('dd ::text').extract()).strip()
        data[key] = val
    print(data)
    

    这将为您提供所有规格的字典。你可以随意格式化它。

    【讨论】:

    • @sagun-shresta 感谢您的宝贵回答。所以我必须遍历 CSS“表结构”。我坚持这样一个事实,即它是一个可以作为 HTML 寻址的表结构。但它们是纯 CSS 组件。感谢您为我提供有关提取它的最佳方法的代码(一次一个,逐个)。你真好!我明天会解决它......我们是否没有一个函数或例程来“看到”我们眼睛看到的数据积累:作为一个表格。并相应地删除数据并将其重新组装到我的服务器上?不,对吧?
    • @Legion 没有这样的功能是不可能的。使用 CSS,您可以使任何标签看起来像表格,而 css 选择器不能那样工作。您可能必须分别找出每个结构的逻辑。
    • @Sagun-Shresta 明白。然后我将专注于使用相同的 CSS 格式输出解析的数据(通常在这些星座中表示) - 根据需要。所以同时保存样式文件。好的。
    • @Legion 如果它解决了您的问题,您能否将此答案标记为正确?这将有助于其他寻找类似问题的人。
    • @Sagun-Shresta 我几天前做了。它只是不被接受,因为我还需要 2 个声誉投票。看,我再次点击并得到:感谢您的反馈!声望少于 15 人的投票将被记录,但不会改变公开显示的分数。 -> 如果有人在这里给我的帖子打分,我需要另一个来获得 15 名声望。很抱歉,我(还)不能(正式)评价它。但它会自动出现,因为我已经标记了它。