Невозможно создать разные листы в файле Excel для разных ссылок

Я написал скрипт на python, чтобы проанализировать некоторые tiles и links различных руководств с веб-страницы и, наконец, записать их в файл 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.


person SIM    schedule 13.01.2018    source источник
comment
Что ты не умеешь делать?   -  person Charlie Clark    schedule 14.01.2018
comment
Так что вам больше нечего делать без раздражающих замечаний @Charlie Clark. Кстати, проблема уже решена.   -  person SIM    schedule 14.01.2018
comment
Пожалуйста, ознакомьтесь с правилами задавания вопросов.   -  person Charlie Clark    schedule 15.01.2018
comment
Где я ошибся?   -  person SIM    schedule 15.01.2018
comment
openpyxl.readthedocs.io/en/latest/usage.html# write-a-workbook показывает, как создавать листы. Ваш вопрос должен был начаться там.   -  person Charlie Clark    schedule 15.01.2018
comment
Если я не смог внести ясность в свой вопрос, как я получил точный ответ, который хотел? Оказывается, вы изначально сделали резкий комментарий и получили даже резкий ответ, поэтому вы не можете этого принять. Давайте проигнорируем это детское поведение. Спасибо, в любом случае.   -  person SIM    schedule 15.01.2018


Ответы (1)


Код ниже возвращает лист, который выглядит следующим образом: ~Снимок экрана Excel

Перед циклом 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")
person Spence Wetjen    schedule 13.01.2018
comment
Ты потрясающий @Spence Wetjen!!!! Ваше решение - это то, что я ожидал. Только одно: можно ли выкинуть этот чистый лист из рабочей тетради. Триллион спасибо. - person SIM; 13.01.2018
comment
@novice-coder Конечно. Обновлено решение, чтобы отразить это. - person Spence Wetjen; 13.01.2018
comment
Миллион спасибо. Хотел бы я проголосовать за ваше решение тысячу раз. Спасибо еще раз. - person SIM; 13.01.2018