首页 > 解决方案 > 如何从image_URL下载图像并计算python中的重复次数?

问题描述

我有一个包含 imageid、imageurl 的数据集。我需要使用图像 url 提取所有图像并将它们压缩到一个文件中,并下载所有图像。而且我需要计算重复次数,因为某些图像 url 重复了几次。我如何在python中做到这一点?

我想的方法是在这里使用 for 循环: image_id 应该是文件名

编辑1:添加了代码,我如何结合两个for循环?

import urllib

list1 = []

    for key1 in (csv_file['imageid']):
        list1 = str(key1)+".jpg"
        for key in (csv_file['imageurl']):
           urllib.request.urlretrieve(key, list1)

编辑2:csv文件

Edit3:使用库时出错

unknown url type: '430'
430
2020-03-02 22:08:26 ('430',)
2020-03-02 22:08:26 (ValueError("unknown url type: '430'"), '430')
2020-03-02 22:08:26 ('error url:', {'url': '430', '_concurrency': 1, 
'_startTm': 1583167106.29, '_endTm': 1583167106.292}, None)

这是我在使用这个库时遇到的错误

标签: pythonpython-3.xdataset

解决方案


根据您提供的 CSV 文件,这是一个示例。但我建议你不要直接使用这个库,因为它很麻烦。您可以尝试使用其他打包的库,例如 requests 和 simple_scrapy。

import csv
import urllib.request
# from simplified_scrapy import req, utils

list1 = []
with open('test.csv') as f:
  f_csv = csv.reader(f)
  list1 = set([row[1] for row in f_csv if row][1:]) 
for url in list1:
  urllib.request.urlretrieve(url, filename=url.split('/')[-1])
  # utils.saveResponseAsFile(req.get(url),url.split('/')[-1])

给你一个使用simplified_scrapy下载图片的例子

from simplified_scrapy import Spider, SimplifiedDoc, SimplifiedMain, utils
import csv
class ImageSpider(Spider):
  name = 'ImageSpider'
  def __init__(self):
    with open('test.csv')as f:
      f_csv = csv.reader(f)
      self.start_urls = [row[1] for row in f_csv if row][1:]
    Spider.__init__(self,self.name) # The framework will help you eliminate duplicate data

  def afterResponse(self, response, url, error=None, extra=None):
    try:
      # Create file name
      end = url.find('?') if url.find('?')>0 else len(url)
      name = 'data'+url[url.rindex('/',0,end):end]
      # Save img
      utils.saveResponseAsFile(response,name,'image')
      return None 
    except Exception as err:
      print (err)
SimplifiedMain.startThread(ImageSpider()) # Start

以下是 SimplifiedDoc 库的更多示例:https ://github.com/yiyedata/simplified-scrapy-demo/tree/master/


推荐阅读