在Python中,urllib.urlretrieve下载一个文件,上面写着;“走开”;
我正在尝试从以下链接下载(APK)文件,例如。当您在浏览器中输入链接时,将弹出一个对话框以打开或保存文件(请参见下文) 我想用Python脚本保存文件。我尝试了以下方法:在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
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…”的内容。这是最有可能被检测到的原因。服务器可能正在查看用户代理,注意到您试图使用代码而不是常规浏览器下载文件,并为您提供不同的文件。您可以通过添加正确的头来自定义用户代理,从而欺骗常规浏览器。服务器可能正在查看用户代理,注意到您试图使用代码而不是常规浏览器下载文件,并为您提供不同的文件。您可以通过添加正确的头来自定义用户代理,从而欺骗常规浏览器。