【问题标题】:How to fix HTML downloading instead of image file如何修复 HTML 下载而不是图像文件
【发布时间】:2018-12-20 05:02:37
【问题描述】:

我正在尝试使用 Python 3.7 中的 urllib 从链接下载文件,它下载的是 HTML 文件而不是图像文件。

所以我正在尝试从 Google 表单接收信息,该信息被发送到 Google 表格。我能够收到工作表中的信息没问题。但是,表单需要提交图像,该图像以 URL 的形式出现在工作表中。 (例如:https://drive.google.com/open?id=1YCBmEOz6_l7WDQw5t6AYBSb9B5XXKTuX

这是我的代码:

import urllib.request
import random

然后我创建一个下载函数:

def downloader(image_url):
    file_name = random.randrange(1,10000)
    full_file_name = str(file_name) + '.png'
    print(full_file_name)
    urllib.request.urlretrieve(image_url,full_file_name)

我得到网址并隔离图片的ID:

ImgId="https://drive.google.com/open?id=1Mp5XYoyyEfWJryz8ojLbHuZ6V0IzERIV"
ImgId=ImgId[33:]

然后我把ID放在一个下载链接里:

ImgId="https://drive.google.com/uc?authuser=0&id="+ImgId+"&export=download"

这导致(在上面的示例中)“https://drive.google.com/uc?authuser=0&id=1YCBmEOz6_l7WDQw5t6AYBSb9B5XXKTuX&export=download”。 接下来我运行下载功能:

downloader(ImgId)

因此,在此之后,我希望将 png 文件下载到程序的文件夹中,但是它下载了 google drive log-in 页面的 html 文件而不是图像文件,甚至图像的 html 文件。请注意,要查看或下载图像,您需要登录 Google 才能在浏览器中下载,授权可能是个问题吗? (注意:如果我手动将程序生成的下载链接粘贴到我的浏览器中,它会正确下载图像) (PS我绝对是菜鸟,所以是的) (提前感谢您的任何回答)

【问题讨论】:

    标签: python urllib download


    【解决方案1】:

    不要使用urllib进行下载,而是使用请求并使用GET rest调用获取页面内容,然后使用beautifulsoup将响应内容转换为汤内容,然后指向您要下载的内容,作为html中的下载功能会有一个与之关联的下载链接,然后使用 js 下载再次发送 get 请求。

    import requests
    import bs4
    response = requests.get(<your_url>)
    soup = bs4.BeautifulSoup(response.content, 'html5lib')
    # Get the download link and supply all the necessary values to the link
    # Initiate Requests again
    

    【讨论】:

    • 从那里,我认为 "open(full_file_name, 'wb').write(response.content)" 将下载文件。
    • 是的 Bill M. 那将下载内容
    • 不幸的是,使用请求模块仍然导致下载 HTML 文件而不是图像。
    猜你喜欢
    • 1970-01-01
    • 2019-06-13
    • 2023-03-25
    • 2015-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-14
    相关资源
    最近更新 更多