Сохранение очищенных документов на двух листах в файле 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