【问题标题】:scrapy-xlsx, How to make a clickable link in a xlsx?scrapy-xlsx,如何在 xlsx 中制作可点击的链接?
【发布时间】:2021-06-30 10:21:01
【问题描述】:

我不知道我的代码是否对这个问题负责。 带着这个问题(Scapy, Python - To create a clickable link with CSV),我发现 CSV 不支持超链接格式。所以我找到了scrapy-xlsx 包,安装并运行它。

scrapy crawl GoogleScrapyBot -o output.xlsx

然后我可以得到“output.xlsx”。 当我在我的电脑(Windows 10、Office365)上打开“output.xlsx”时,它打开如下图所示(超链接仍未设置)

但是当我点击 Excel 中的输入窗口时,

它将更改为可点击的链接。

我不想在 Excel 程序上执行此操作。 Scrapy有什么可能的方法吗?

【问题讨论】:

  • 几个小时前我在你关于 CSV 的问题中提出了这个问题:stackoverflow.com/questions/6563091/…
  • @barny 你让它工作了吗?对我来说,Excel 显示“我们发现某些内容有问题,您要尝试恢复吗”?
  • @barny 我不想在打开 Excel 时做额外的工作。如果我对您分享的链接理解正确,看来我需要处理其他 Excel 程序。

标签: python scrapy xlsx


【解决方案1】:

您可以在 GoogleBotsSpider 类中添加此方法。它使用openpyxl,它包含在scrapy-xlsx 中。不要忘记添加from openpyxl import load_workbook

def close(self, reason):
    super().close(self, reason)
    wb = load_workbook(self.settings.attributes["FEED_URI"].value)
    ws = wb.active
    for i, row in enumerate(ws.rows):
        if i:  # ignores first row which contains column headers
            row[0].hyperlink = row[0].value  # here 0 means the first cell of the row, adapt it to your code
            row[0].style = "Hyperlink"
    wb.save(self.settings.attributes["FEED_URI"].value)

您还需要在settings.py 中添加此设置FEED_URI = "output.xlsx",但您也可以从sys.argv 获取。

【讨论】:

  • 谢谢。我想这对我会有用。我会审查它并尝试适应我的代码。在看到你的回答之前,我尝试了 Pandas,并检查了 xlsx 文件是否生成良好,并且链接显示良好。
  • 我觉得直接在spider类里做会更清晰高效。如果这对您有用,请考虑支持此答案:)
猜你喜欢
  • 2018-07-18
  • 1970-01-01
  • 2023-01-27
  • 1970-01-01
  • 2016-04-07
  • 1970-01-01
  • 2017-07-03
  • 1970-01-01
  • 2022-11-05
相关资源
最近更新 更多