【问题标题】:Downloading file from URL using Python - Unknown error使用 Python 从 url 下载文件 - 未知错误
【发布时间】:2021-05-21 18:59:59
【问题描述】:

我在从特定的韩语 URL 下载文件时遇到问题。当我搜索如何通过 url 下载文件时,它推荐了许多解决方案,例如使用 urlretrieve、urlopen、wget。但是,每当我尝试时,它都会保存一个 0 字节的 pdf 文件,并且不会返回任何错误消息。

所以我厌倦了使用 Postman 或 J2downloader 等其他程序,他们将 pdf.do 保存为 0 字节。我知道.do 可以用 Acrobat Reader 打开,但大小告诉我它无法下载内容。

网站的网址是http://dart.fss.or.kr/pdf/download/pdf.do?rcp_no=20210218000576&dcm_no=7808922。如果我通过网站打开它,它会正确下载。

现在我不确定是我的代码问题还是站点机制不同。如果是网站机制,您能告诉我如何使用 Python 使其工作吗?

感谢您的阅读

我尝试过的代码

final_url = http://dart.fss.or.kr/pdf/download/pdf.do?rcp_no=20210218000576&dcm_no=7808922
1. 
    urlretrieve(final_url, "./down2.pdf")
2.
    with open("down.pdf",'wb') as file:
        response = requests.get(final_url, allow_redirects=True)
        print(response.content)
        file.write(response.content)
3. 
    mem = urlopen(final_url).read()
    with open("down.pdf",'wb') as file:
        file.write(mem)
        file.close()
4.
    wget.download(final_url, "my download folder")

【问题讨论】:

  • this post 中的任何替代方案都有效吗?
  • 不...我尝试了您提供的帖子中的所有替代方法,但它只下载了 0byte pdf 文件 @RandomDavis
  • 你试过this吗?我认为您尝试的所有技术仅适用于非重定向直接文件链接,而您的可能不是。
  • 我还认为这可能是一个重定向问题,我尝试了allow_redirects=True,但它不起作用,即使添加了该参数,它也有相同的 url。
  • 我想知道“用户代理”是否会影响结果,所以我从 chrome 复制了用户代理并添加到程序中,它可以工作。猜猜该网站只希望浏览器访问它。感谢@RandomDavis 的帮助,这让我想到了添加标题。

标签: python downloadfile


【解决方案1】:

问题在于该网站似乎只允许浏览器下载文件。所以解决方案是从浏览器获取用户代理头并输入到程序中。

headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36'}
response = requests.get(final_url, headers=headers)

with open("down.zip",'wb') as file:
    print(response.content)
    file.write(response.content)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多