[英]Python Download Using CSV file
我试图弄清楚如何使用 Python 下载 CSV 文件中列出的文件,并使用 CSV 文件命名下载。 所以我的 CSV 文件看起来像这样:
HTTP://www.example.com/filetodownload.jpg,mypicture1.jpg
HTTP://www.example.com/2ndfiletodownload.jpg,mypicture2.jpg
该脚本将读取 CSV 文件,从第一个字段下载它,并用第二个字段中的值命名。 它将循环通过 CSV 文件直到结束。
有没有人有什么建议?
编辑:我没有包括到目前为止我所拥有的......对此感到抱歉。 这将下载文件,但不会使用逗号后的值重命名它们。
import csv, sys
import requests
import urllib2
import os
filename = 'test.csv'
with open(filename, 'rb') as f:
reader = csv.reader(f)
try:
for row in reader:
if 'http' in row[0]:
#print row
rev = row[0][::-1]
i = rev.index('/')
tmp = rev[0:i]
#print tmp[::-1]
rq = urllib2.Request(row[0])
res = urllib2.urlopen(rq)
if not os.path.exists("./"+tmp[::-1]):
pdf = open("./" + tmp[::-1], 'wb')
pdf.write(res.read())
pdf.close()
else:
print "file: ", tmp[::-1], "already exist"
except csv.Error as e:
sys.exit('file %s, line %d: %s' % (filename, reader.line_num, e))
您可以使用requests
模块下载文件,并使用csv
模块读取 csv 文件。 这是一个非常简单的例子:
import csv
import requests
filename = "file.csv"
with open(filename, 'r') as file:
# Get list from csv file
csvFile = csv.reader(file)
# data of download
dat = None
for item in csvFile:
# get the length of the list
args = len(item)
pairs = args // 2
for i in range(pairs):
try:
dat = requests.get(item[i], timeout=0.5)
except:
continue
dat = dat.content
with open(item[i+1], "wb") as download:
download.write(dat)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.