【发布时间】:2017-05-19 14:09:06
【问题描述】:
我想使用不同的用户代理从 http://www.apkmirror.com 下载 APK 文件。以下适用于 Python 2:
import urllib
class ApkURLopener(urllib.FancyURLopener):
version = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36'
urllib._urlopener = ApkURLopener()
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)
在不使用urllib.request.urlretrieve 的情况下,我很难找到在 Python 3 中执行相同操作的代码,这在未来可能会被弃用。到目前为止,我想出了
#!/usr/bin/python3
import urllib.request
download_link = 'https://www.apkmirror.com/wp-content/themes/APKMirror/download.php?id=215041'
download_file = '/tmp/apkmirror_test/youtube.apk'
USER_AGENT = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36'
request = urllib.request.Request(url=download_link, headers={'User-Agent': USER_AGENT})
if __name__ == "__main__":
response = urllib.request.urlopen(url=request)
我怀疑我应该使用response 对象的write 方法,但我不确定如何使用,或者是否确实是这样做的方法。有什么建议吗?
【问题讨论】: