【问题标题】:Crawling images and storing in multiple folders抓取图像并存储在多个文件夹中
【发布时间】:2018-08-17 15:01:09
【问题描述】:

我不知道如何处理以下问题。我想从存储在数据框每一行中的 URL 中抓取多个图像,并将图像按它们各自的 categoryId 存储在一个文件夹中。然而,这是可能的过程,但现在有一些小错误,我不知道如何修复它。以下代码 sn -p 演示了下载和存储文件的过程:

import os

for x in range(df.shape[0]):
    ID = df.categoryId[x]

    print(ID)
    if not os.path.exists(ID):
        os.makedirs(ID)

    urllib.request.urlretrieve(str(df.image_url[x]), "{}/image{}.jpg".format(ID, x))

问题是在第一个类别 (19) 中将存储所有图像(所有类别),但实际上只有 165 个文件。其他类别的图像与正确数量的图像一起正确存储。我还尝试计算数字类别并将其分布在不同的文件夹中,但它不起作用。

df.categoryId.value_counts()

Output:
19    165
24     23
1       8
10      2
20      1
23      1

【问题讨论】:

    标签: python-3.x pandas dataframe web-scraping web-crawler


    【解决方案1】:

    您真的应该使用 df.iterrows() 之类的东西来迭代 DataFrame,这本身可能会解决您的问题。

    import os
    
    for x, (index, row) in enumerate(df.iterrows()):
        ID = row['categoryId']
    
        print(ID)
        if not os.path.exists(ID):
            os.makedirs(ID)
    
        urllib.request.urlretrieve(str(row['image_url']), "{}/image{}.jpg".format(ID, x))
    

    【讨论】:

    • 谢谢你的回答,我应该用 df.iterrows() 解决这个问题,但是它不能解决第一个文件夹中的所有类别的所有图像的问题。
    猜你喜欢
    • 2019-07-28
    • 1970-01-01
    • 2011-10-15
    • 1970-01-01
    • 2021-10-03
    • 2020-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多