直接从网站下载 CSV 文件 link
Downloading CSV files directly from website link
目标:从网站下载 CSV 文件 link 直接到文件下载。
我经历了数十个线程,使用不同的方法下载 CSV 文件。每种方法都给我留下了 excel 文件的相同损坏格式,该文件不包含原始信息但包含一些代码。
我已经尝试将这些方法与来自其他网站的其他 link 一起使用,并且效果很好,这让我觉得来自这个特定网站的这些 excel 文件有一些不同之处,导致问题。
我当前的代码(许多不同版本之一,都产生相同的结果):
import requests
import shutil
import datetime
import csv
req = requests.get('https://cranedata.com/publications/download/mfi-daily-data/issue/2020-09-11/.csv', stream=True)
url_content = req.content
if req.status_code == 200:
print(req.status_code == requests.codes.ok)
print(requests.Response.content)
csv_file = open('MFID200911 .csv', 'wb')
csv_file.write(url_content)
csv_file.close()
我认为没有问题,因为我有 200 和 true 作为 req 和 req.status_code == requests.codes.ok
的输出
这会生成一个 excel 文件,如下所示:https://prnt.sc/ugx7bv
而不是我从网站手动下载文件时看到的那个:https://prnt.sc/ugx7u4
我的最终目标是循环下载所有 CSV 文件,因为 link 上只有日期会发生变化,但是现在我只需要正确下载一个文件即可。
编辑:这是实现循环后的代码
web = Browser()
web.go_to('https://cranedata.com/')
web.type(username , into='username')
web.type(password , into='password')
web.click('Login' , tag='login')
sdate = date(2009, 1, 1) # start date
edate = date(2020, 9, 15) # end date
delta = edate - sdate # as timedelta
dates = [datetime.datetime(2009,4,6)+datetime.timedelta(dval) for dval in range(delta.days+1)];
for dateval in dates:
web.go_to('https://cranedata.com/publications/download/mfi-daily-data/issue/' +dateval.strftime('%Y-%m-%d') + '/csv')
登录后可以使用twill or mechanize packages, as exemplified 直接获取文件
或者您可以使用自动化工具,例如 web bot 来模拟用户导航:
from webbot import Browser
username = 'your_username'
password = 'your_password'
web = Browser()
web.go_to('https://cranedata.com/')
web.type(username , into='username')
web.type(password , into='password')
web.click('Login' , tag='login')
web.go_to('https://cranedata.com/publications/download/mfi-daily-data/issue/2020-09-11/.csv')
目标:从网站下载 CSV 文件 link 直接到文件下载。
我经历了数十个线程,使用不同的方法下载 CSV 文件。每种方法都给我留下了 excel 文件的相同损坏格式,该文件不包含原始信息但包含一些代码。
我已经尝试将这些方法与来自其他网站的其他 link 一起使用,并且效果很好,这让我觉得来自这个特定网站的这些 excel 文件有一些不同之处,导致问题。
我当前的代码(许多不同版本之一,都产生相同的结果):
import requests
import shutil
import datetime
import csv
req = requests.get('https://cranedata.com/publications/download/mfi-daily-data/issue/2020-09-11/.csv', stream=True)
url_content = req.content
if req.status_code == 200:
print(req.status_code == requests.codes.ok)
print(requests.Response.content)
csv_file = open('MFID200911 .csv', 'wb')
csv_file.write(url_content)
csv_file.close()
我认为没有问题,因为我有 200 和 true 作为 req 和 req.status_code == requests.codes.ok
的输出这会生成一个 excel 文件,如下所示:https://prnt.sc/ugx7bv
而不是我从网站手动下载文件时看到的那个:https://prnt.sc/ugx7u4
我的最终目标是循环下载所有 CSV 文件,因为 link 上只有日期会发生变化,但是现在我只需要正确下载一个文件即可。
编辑:这是实现循环后的代码
web = Browser()
web.go_to('https://cranedata.com/')
web.type(username , into='username')
web.type(password , into='password')
web.click('Login' , tag='login')
sdate = date(2009, 1, 1) # start date
edate = date(2020, 9, 15) # end date
delta = edate - sdate # as timedelta
dates = [datetime.datetime(2009,4,6)+datetime.timedelta(dval) for dval in range(delta.days+1)];
for dateval in dates:
web.go_to('https://cranedata.com/publications/download/mfi-daily-data/issue/' +dateval.strftime('%Y-%m-%d') + '/csv')
登录后可以使用twill or mechanize packages, as exemplified
或者您可以使用自动化工具,例如 web bot 来模拟用户导航:
from webbot import Browser
username = 'your_username'
password = 'your_password'
web = Browser()
web.go_to('https://cranedata.com/')
web.type(username , into='username')
web.type(password , into='password')
web.click('Login' , tag='login')
web.go_to('https://cranedata.com/publications/download/mfi-daily-data/issue/2020-09-11/.csv')