使用Python从url下载文件-未知错误
我从特定的韩国url下载文件时遇到问题。当我在谷歌上搜索如何通过url下载文件时,它推荐了许多解决方案,比如使用urlretrieve、urlopen和wget。但是,每当我尝试时,它都会保存一个0字节的pdf文件,并且不会返回任何错误消息 所以我厌倦了使用其他程序,比如Postman或J2downloader,他们用0字节保存了使用Python从url下载文件-未知错误,python,downloadfile,Python,Downloadfile,我从特定的韩国url下载文件时遇到问题。当我在谷歌上搜索如何通过url下载文件时,它推荐了许多解决方案,比如使用urlretrieve、urlopen和wget。但是,每当我尝试时,它都会保存一个0字节的pdf文件,并且不会返回任何错误消息 所以我厌倦了使用其他程序,比如Postman或J2downloader,他们用0字节保存了pdf.do。我知道可以用Acrobat Reader打开.do,但大小告诉我它无法下载内容 该站点的url为。如果我通过网站打开它,它会正确下载 现在我不确定是我的代
pdf.do
。我知道可以用Acrobat Reader打开.do
,但大小告诉我它无法下载内容
该站点的url为。如果我通过网站打开它,它会正确下载
现在我不确定是我的代码问题还是网站机制不同。如果是网站机制,你能告诉我如何在使用Python时使用它吗
谢谢你的阅读
我尝试的代码
final_url = http://dart.fss.or.kr/pdf/download/pdf.do?rcp_no=20210218000576&dcm_no=7808922
1.
urlretrieve(final_url, "./down2.pdf")
2.
with open("down.pdf",'wb') as file:
response = requests.get(final_url, allow_redirects=True)
print(response.content)
file.write(response.content)
3.
mem = urlopen(final_url).read()
with open("down.pdf",'wb') as file:
file.write(mem)
file.close()
4.
wget.download(final_url, "my download folder")
问题是该网站似乎只允许浏览器下载文件。因此,解决方案是从浏览器中获取用户代理头并输入到程序中
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36'}
response = requests.get(final_url, headers=headers)
with open("down.zip",'wb') as file:
print(response.content)
file.write(response.content)
有其他选择吗?没有。。。我在你提供的帖子中尝试了所有备选方案,但它只下载了0字节的pdf文件@RandomDavisDid你尝试了吗?我认为您尝试的所有技术只适用于非重定向直接文件链接,你的可能不是。我还认为这可能是一个重定向问题,我尝试了
allow_redirects=True
,但它不起作用,而且即使添加了该参数,它也有相同的url。我想知道“用户代理”是否会影响结果,所以我从chrome复制了用户代理,并添加到程序中,结果成功了。我猜网站只想让浏览器访问它。感谢@RandomDavis的帮助,这让我想到了添加标题。