Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中,urllib.urlretrieve下载一个文件,上面写着;“走开”;_Python_Web Scraping_Urllib - Fatal编程技术网

在Python中,urllib.urlretrieve下载一个文件,上面写着;“走开”;

在Python中,urllib.urlretrieve下载一个文件,上面写着;“走开”;,python,web-scraping,urllib,Python,Web Scraping,Urllib,我正在尝试从以下链接下载(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

我正在尝试从以下链接下载(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
之间肯定存在一些差异,这使得此功能无法工作。有人能解释一下这种差异以及如何消除它吗?

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


也就是说,您的请求头是不同的。Python默认将用户代理设置为类似“Python…”的内容。这是最可能的检测原因。

您不应该以编程方式访问该下载页面,因为robots.txt中不允许该页面:


也就是说,您的请求头是不同的。Python默认将用户代理设置为类似“Python…”的内容。这是最有可能被检测到的原因。

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