Python通过存储在csv中的链接下载文件
作为Python(2.7)的新手,我期待下一个建议: 我有一个csv文件,其中以逗号分隔的一列中存储了http链接Python通过存储在csv中的链接下载文件,python,file,csv,download,Python,File,Csv,Download,作为Python(2.7)的新手,我期待下一个建议: 我有一个csv文件,其中以逗号分隔的一列中存储了http链接 http://example.com/file.pdf, http://example.com/file.xls, http://example.com/file.xlsx, http://example.com/file.doc, 主要目的是循环浏览所有这些链接,并下载原始扩展名和名称中的文件 因此,我的搜索结果和帮助为我提供了下一个脚本: import urllib2 imp
http://example.com/file.pdf,
http://example.com/file.xls,
http://example.com/file.xlsx,
http://example.com/file.doc,
主要目的是循环浏览所有这些链接,并下载原始扩展名和名称中的文件
因此,我的搜索结果和帮助为我提供了下一个脚本:
import urllib2
import pandas as pd
links = pd.read_csv('links.csv', sep=',', header =(0))
url = links # I know this part wrong by don`n know how to do right
user_agent = 'Mozilla 5.0 (Windows 7; Win64; x64)'
file_name = "tessst" # here the files name by how to get their original names
u = urllib2.Request(url, headers = {'User-Agent' : user_agent})
req = urllib2.urlopen(u)
f = open(file_name, 'wb')
f.write(req.read())
f.close()
请帮忙
p S不确定熊猫——也许更好 如果我可以假设您的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))
那么呢?一般来说,它在一些更改(添加标题后)后工作,但是它会重写文件,很高兴您使用它。我已经改变了代码,现在它将下载,只有当文件之前没有下载###和平谢谢你的回答,但是主要的目的是让所有的文件,而不是一个,仍然没有被检查。如果我答错了,请纠正我。您有一个包含url列的CSV文件。因此,您希望从csv中提取所有URL并循环浏览它们,然后从那里下载所有(PDF | DOC | DOCX |*)文件。因此,我创建了一个test.csv,其中包含url,并从那里下载了每个url的所有资源。是的,我做对了。但是-脚本仍在重写最终文件。它下载所有链接,但总是用新链接重写最终下载的文件