Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python通过存储在csv中的链接下载文件_Python_File_Csv_Download - Fatal编程技术网

Python通过存储在csv中的链接下载文件

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

作为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
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的所有资源。是的,我做对了。但是-脚本仍在重写最终文件。它下载所有链接,但总是用新链接重写最终下载的文件