【问题标题】:Downloading a file from a html? url with python 3从html下载文件?带有python 3的网址
【发布时间】:2017-11-12 17:39:39
【问题描述】:

我一直在寻找有关如何下载文件的几个小时the documentation 向我展示了如何执行此操作;但是 cygwin 很可怕而且使用起来很烦人,我正在尝试在 Python 3 中为程序实现这一点。我尝试使用 urllib、requests、wget(in python)、httplib 和其他一些。但它只获取重定向的页面(如果您将链接粘贴到具有正确格式的 url 的 url 栏中,您会得到。)

虽然当我检查页面并触发与我尝试过的地址相同的下载链接时,它可以正常工作并为我提供下载弹出窗口。 Here is an example page点击“下载数据”触发链接

我不明白任何 python 包如何无法发送正确的 get 请求,并且我需要在 linux 中实现这个程序才能使用“wget”。

有人知道如何正确调用网址吗?

【问题讨论】:

  • 你试过 urllib.requests 吗? (urllib.requests.retreive))
  • 如前所述,我尝试了 urllib.request.urlretreive

标签: python html python-3.x networking ftp


【解决方案1】:

您需要在 URL 末尾添加 &submit=Download+Data 才能下载数据。您可以通过谷歌浏览器中检查元素的网络选项卡看到这一点。希望我能帮上忙!

【讨论】:

  • 我使用 Src="climate.weather.gc.ca/climate_data/…{stat}&Year={yr}&Month={moth}&Day={day}&timeframe={tf}&submit=Download+Data".format(stat= stt,yr=Yr,mth=mss,day=Day,tf=TimeF) src 是我尝试使用任何库的查询请求的输入,但它不起作用,它总是将我重定向到主页。
【解决方案2】:

我觉得

from subprocess import call

def download(URL)
      CMD = ['curl',url]
      call(CMD)

运行这个:

download('www.download.com/blah/bah/blah')

如果你想从解释器中使用它: 另存为module.py

python -i /path/to/module.py

>>>download('www.download.com/blah/bah/blah')

附言如果这可行,我会在我的 shell 程序中使用它

编辑:我的评论:

我试过这个并得到“格式错误的网址”错误

from subprocess import call
def download(FILE,URL):
    #FILE = file to save to
    #URL - download from here
    CMD = ['curl','-o',FILE,URL]
    call(CMD)

这是我对来自 python 的所有系统命令所做的,所以它与 curl 具体有关。

【讨论】:

  • 使用 vanilla curl 它不起作用,可能有一些选项并通过发送正确的标头或使用正确的选项它可能会起作用,但即使有有效和无效的请求,它也会显示相同的响应。但我刚才用 urllib 得到了一个很好的回应。
  • 好的,我想知道如何在评论中编写代码,我只想在我的回答中重新正确
  • 我的建议是熟悉 bash 中的 curl(我不是),然后你就会知道如何让它在 python 中工作,只需将命令设置为变量名 CMD(不能做空格打电话给它必须是我在回答中的列表)
  • 我认为 Bluecode 很可能将“&submit=Download+Data”放在 url 的末尾,但 idk html 所以我不知道它是否需要在它们之间添加 / 或什么
  • 老实说,我看到 curl 接受 url 但不接受文件字段的等效项。
猜你喜欢
  • 2011-11-28
  • 1970-01-01
  • 2016-08-25
  • 2014-06-21
  • 2012-02-02
  • 2015-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多