Сохранение очищенных документов на двух листах в файле Excel

Я создал скребок, который должен анализировать некоторые документы с веб-страницы и сохранять его в файл Excel, создавая два листа. Однако когда я запускаю его, я вижу, что он сохраняет документы последней ссылки только на одном листе, тогда как должно быть два листа с документами из двух ссылок должным образом. Я даже напечатал результаты, чтобы увидеть, что происходит на заднем плане, но я не нашел в этом ничего плохого. Я думаю, что первый лист перезаписывается, а второй никогда не создается. Как обойти это, чтобы данные сохранялись на двух листах в файле Excel. Спасибо заранее, чтобы взглянуть на это.

Вот мой код:

import requests
from lxml import html
from pyexcel_ods3 import save_data

name_list = ['Altronix','APC']

def docs_parser(link, name):   
    res = requests.get(link)
    root = html.fromstring(res.text)
    vault = {}
    for post in root.cssselect(".SubBrandList a"):
        if post.text == name:
            refining_docs(post.attrib['href'], vault)

def refining_docs(new_link, vault):
    res = requests.get(new_link).text
    root = html.fromstring(res)  
    sheet = root.cssselect("#BrandContent h2")[0].text   
    for elem in root.cssselect(".ProductDetails"):
        name_url = elem.cssselect("a[class]")[0].attrib['href']
        vault.setdefault(sheet, []).append([str(name_url)])
        save_data("docs.ods", vault)

if __name__ == '__main__':
    for name in name_list:
        docs_parser("http://store.immediasys.com/brands/" , name)

Но точно так же, когда я пишу код для другого сайта, он отвечает ожиданиям создания разных листов и сохранения документов на них. Вот ссылка: https://www.dropbox.com/s/bgyh1xxhew8hcvm/Pyexcel_so.txt?dl=0

1 ответ

Решение

Вопрос: Мне кажется, первый лист перезаписывается, а второй никогда не создается. Как обойти это, чтобы данные сохранялись на двух листах в файле Excel.

Вы перезаписываете файл книги в каждой добавляемой ссылке.
Вы никогда не должны звонить save_data(... в цикле, только один раз в конце вашего сценария.

Сравнивая вас с двумя сценариями, нет никакой разницы, оба ведут себя одинаково, снова и снова перезаписывая файл рабочей книги. Возможно, файл ввода-вывода перегружен, так как вы выполняете более 160 раз перезаписи файла книги в течение короткого времени.

Первый сценарий должен создать 13 листов:

data sheet:powerpivot-etc links:20
data sheet:flappy-owl-videos links:1
data sheet:reporting-services-videos links:20
data sheet:csharp links:14
data sheet:excel-videos links:9
data sheet:excel-vba-videos links:20
data sheet:sql-server-videos links:9
data sheet:report-builder-2016-videos links:4
data sheet:ssrs-2016-videos links:5
data sheet:sql-videos links:20
data sheet:integration-services links:19
data sheet:excel-vba-user-form links:20
data sheet:archived-videos links:16

Второй сценарий должен создать 2 листа:

vault sheet:Altronix links:16
vault sheet:APC links:16
Другие вопросы по тегам