【问题标题】:Unable to create different sheets in an excel file for different links无法在 Excel 文件中为不同的链接创建不同的工作表
【发布时间】:2018-01-13 18:20:11
【问题描述】:

我用 python 编写了一个脚本来解析来自网页的一些 tileslinks 的不同教程,最后将它们写在一个 excel 文件中。我用过openpyxl。如果我考虑将所有文档放在一张纸上,我的脚本就可以了。但是,我在我的刮板中使用了三个链接来刮取数据。我的目标是将这些刮掉的文档写在一个 Excel 文件中的三个不同的工作表中。我怎样才能做到这一点?提前致谢。

这是我目前所写的:

import requests
from urllib.parse import urljoin
from lxml.html import fromstring
from openpyxl import Workbook

wb = Workbook()
wb.active
ws = wb.worksheets[0]

storage ={
'http://www.wiseowl.co.uk/videos/year/2011.htm',
'http://www.wiseowl.co.uk/videos/year/2012.htm',
'http://www.wiseowl.co.uk/videos/year/2013.htm'
}

def get_docs(link):
    response = requests.get(link)
    root = fromstring(response.text)
    for item in root.cssselect(".woVideoListDefaultSeriesTitle"):
        title = item.cssselect("a")[0].text
        title_link = item.cssselect("a")[0].attrib['href']
        print(title,title_link)
        ws.append([title,title_link])
        wb.save("tuts.xlsx")

if __name__ == '__main__':
    for tut_link in storage:
        get_docs(tut_link)

再一次,我的脚本能够抓取文档并将其写入 excel 文件的单个工作表中,但我希望将文档写入 excel 文件中的三个不同工作表(每个工作表用于每个链接)中。

【问题讨论】:

  • 你不知道怎么办?
  • 因此,如果不发表恼人的言论@Charlie Clark,您将无事可做。顺便说一句,问题已经解决了。
  • 请查看提问规则。
  • 我哪里出错了?
  • openpyxl.readthedocs.io/en/latest/usage.html#write-a-workbook 向您展示如何创建工作表。您的问题应该从那里开始。

标签: python python-3.x web-scraping openpyxl


【解决方案1】:

以下代码返回一个如下所示的工作表: ~Excel Screenshot

在您的 for 循环之前,我们创建一个新工作表来放入结果。然后我们将结果迭代保存到该工作表。

代码:

import requests
from urllib.parse import urljoin
from lxml.html import fromstring
from openpyxl import Workbook

wb = Workbook()
wb.active

storage ={
'http://www.wiseowl.co.uk/videos/year/2011.htm',
'http://www.wiseowl.co.uk/videos/year/2012.htm',
'http://www.wiseowl.co.uk/videos/year/2013.htm'
}

def get_docs(link):
    response = requests.get(link)
    root = fromstring(response.text)
    # Create a worksheet with the title of the year.
    ws = wb.create_sheet(link[37:-4])
    for item in root.cssselect(".woVideoListDefaultSeriesTitle"):
        title = item.cssselect("a")[0].text
        title_link = item.cssselect("a")[0].attrib['href']
        print(title,title_link)
        ws.append([title,title_link])

if __name__ == '__main__':
    for tut_link in storage:
        get_docs(tut_link)
    sheet=wb.get_sheet_by_name('Sheet')
    wb.remove_sheet(sheet)
    wb.save("tuts.xlsx")

【讨论】:

  • 你太棒了@Spence Wetjen!!!!你的解决方案是我所期待的。只有一件事:是否可以从工作簿中踢出那张空白纸。感谢一万亿。
  • @novice-coder 当然。更新了解决方案以反映这一点。
  • 非常感谢。我希望我能对您的解决方案进行一千次投票。再次感谢。
猜你喜欢
  • 1970-01-01
  • 2015-07-18
  • 2022-01-26
  • 2020-10-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
  • 2010-09-18
  • 1970-01-01
相关资源
最近更新 更多