将抓取的文档分两张保存在一个 excel 文件中

Saving scraped documents in two sheets in an excel file

我创建了一个抓取工具,它可以解析网页中的一些文档并将其保存到 excel 文件中,创建两个 sheets。但是,当我 运行 它时,我可以看到它只将最后一个 link 的文档保存在一个 sheet 中,而应该有两个 sheet 的文档来自两个links 正确。我什至打印了结果以查看后台发生了什么,但我发现没有任何问题。我认为第一个 sheet 被覆盖,第二个从未创建。如何解决这个问题,以便将数据保存在 excel 文件中的两个 sheet 中。在此先感谢您查看它。

这是我的代码:

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)

但是,就像我为另一个站点编写代码时一样,它满足了创建不同 sheet 并在其中保存文档的期望。这是 link: https://www.dropbox.com/s/bgyh1xxhew8hcvm/Pyexcel_so.txt?dl=0

Question: I thing the first sheet is overwritten and second one is never created. How to get around this so that data will be saved in two sheets in an excel file.

您覆盖 每个 Link 上的工作簿文件。
你应该从不在一个循环中调用save_data(...,只在你的脚本结束时一次

比较你的两个脚本有没有的区别,两者的行为相同,一次又一次地覆盖工作簿文件。当您在短时间内覆盖工作簿文件的次数超过 160 次时,文件 IO 可能会过载。

第一个脚本应该创建 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