Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.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 创建循环以通过多个URL导入数据_Python - Fatal编程技术网

Python 创建循环以通过多个URL导入数据

Python 创建循环以通过多个URL导入数据,python,Python,我试图在2014年至2017年间创建一个从网站下载数据的循环。我已经创建了一个简单的循环,可以从这个链接下载数据,但2015年、2016年和2017年的数据除外。链接中唯一需要更改的文本是年份: 2014.txt.gz&dir=data/historical/stdmet/ 修订: 我收到的第一个网址有错误: AttributeError: module 'urllib' has no attribute 'urlretrieve' 出于某种原因,它没有导入2014-2017年的任何数据。有没

我试图在2014年至2017年间创建一个从网站下载数据的循环。我已经创建了一个简单的循环,可以从这个链接下载数据,但2015年、2016年和2017年的数据除外。链接中唯一需要更改的文本是年份:

2014.txt.gz&dir=data/historical/stdmet/

修订:

我收到的第一个网址有错误:

AttributeError: module 'urllib' has no attribute 'urlretrieve'

出于某种原因,它没有导入2014-2017年的任何数据。有没有更好的方法来创建这个?任何帮助都将不胜感激。

以下内容在Python3中运行良好。循环在检索数据后创建单个文件

import urllib.request

core = 'https://www.ndbc.noaa.gov/view_text_file.php?filename=42887h'
year = 2014
end = '.txt.gz&dir=data/historical/stdmet/'

for i in range(0,3):

        year += 1
        year_fixed = str(year)
        filename = "text" + str(i) + ".txt"
        urllib.request.urlretrieve(core+year_fixed+end, filename)

使用python3 3.7和请求模块,可以简化为:

import requests
for year in range(2014, 2018):
    url = f'https://www.ndbc.noaa.gov/view_text_file.php?filename=42887h{year}.txt.gz&dir=data/historical/stdmet/'
    r = requests.get(url)
    print(r.text)
您可以将输出保存到文件,而不是打印

//对于Python<3.6的版本,使用str.format进行编辑

url = "https://www.ndbc.noaa.gov/view_text_file.php?filename=42887h{}.txt.gz&dir=data/historical/stdmet/".format(year)

进一步阅读字符串格式:

您试图解决的问题是什么?不要在循环中重置year=2014。另外,在core=“…这不是一个常规的双引号。应该是core=…您的引号不是您认为的那样,您复制粘贴的最后一个引号不是ascifi。首先,在收到以前有效的答案后,不要不断更改问题。其次,AttributeError:module'urllib'没有属性'urlretrieve',听起来好像您在使用Python 3,它在子模块中拆分了urllib,因此您可能应该改用urllib.request.urlretrieve。谢谢,但它在扫描字符串Literal时会生成SyntaxError:EOL。我在文章中也遇到了同样的错误。此片段还包含了您在屏幕截图中看到的内容。您可能使用了不同版本的python。如果您使用的是Pyth在3上,然后尝试替换urllib.request.urlretrieve代替urllib.urlretrieve您应该保存该文件。类似于urllib.request.urlretrievecore+year\u fixed+end,text.txt适用于单个文件。要使其处于循环中并创建多个文件,使用Exec这是一种更好的方法。根据其小插曲h,requests包似乎更有效但是,代码段不起作用。语法错误:第2行的语法无效。您使用的是python2还是python3?我使用的是python3的哪个版本?python-version。python3.6中提供了格式化的字符串文本f
url = "https://www.ndbc.noaa.gov/view_text_file.php?filename=42887h{}.txt.gz&dir=data/historical/stdmet/".format(year)