【问题标题】:In Python, urllib.urlretrieve downloads a file which says "Go away"在 Python 中,urllib.urlretrieve 下载一个文件,上面写着“走开”
【发布时间】:2017-10-19 14:32:45
【问题描述】:

我正在尝试从 https://www.apkmirror.com/wp-content/themes/APKMirror/download.php?id=215041 等链接下载 (APK) 文件。当您在浏览器中输入链接时,它会弹出一个对话框来打开或保存文件(见下文)。

我想使用 Python 脚本保存文件。我尝试了以下方法:

import urllib

download_link = 'https://www.apkmirror.com/wp-content/themes/APKMirror/download.php?id=215041'
download_file = '/tmp/apkmirror_test/youtube.apk'

if __name__ == "__main__":
    urllib.urlretrieve(url=download_link, filename=download_file)

但生成的youtube.apk 仅包含“走开”字样。

由于我可以通过将链接粘贴到浏览器的地址栏中来下载文件,因此这与 urllib.urlretrieve 之间肯定存在一些差异,这使得它无法正常工作。有人可以解释这种差异以及如何消除它吗?

【问题讨论】:

  • 服务器可能正在查看用户代理,注意到您正在尝试使用代码而不是常规浏览器下载文件,并为您提供不同的文件。您可以通过添加正确的标头来自定义用户代理,从而欺骗常规浏览器。

标签: python web-scraping urllib


【解决方案1】:

您不应以编程方式访问该下载页面,因为 robots.txt 中不允许这样做: https://www.apkmirror.com/robots.txt

话虽如此,您的请求标头是不同的。默认情况下,Python 将 User-Agent 设置为“Python ...”之类的东西。这是最有可能被发现的原因。

【讨论】:

    猜你喜欢
    • 2015-10-16
    • 1970-01-01
    • 2014-02-05
    • 1970-01-01
    • 1970-01-01
    • 2011-10-22
    • 2017-06-16
    • 2014-10-14
    • 2018-02-26
    相关资源
    最近更新 更多