在Python中,urllib.urlretrieve会下载一个文件,其中包含" Go away"

时间:2017-05-19 12:41:21

标签: python web-scraping urllib

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

enter image description here

我想使用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和{{1}}之间必须存在一些区别,这会使其无效。有人可以解释这种差异以及如何消除它吗?

1 个答案:

答案 0 :(得分:2)

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

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