玩蛇网提供最新Python编程技术信息以及Python资源下载!
您现在的位置: 玩蛇网首页 > Python问题解答 > 正文内容

Python3下载rar文件打开报错求解

点击某个链接后就可以下载文件
代码如下:

import requests
import os
import urllib.request

url = 'http://www.hacker.com.cn/index.php?m=content&c=down&a=download&a_k=bd8dBFECVFYCUlUBAQJbAw5VBF0MAgJVUQIICAkPBQoGBQASBQ9VQEFfQ0UMVQwCDlVRDwEDABFZQw0NAEgKCB8EBxpQBF1AX19UF1dZUEVMFFsXF0VHQB5bUVtTA0oWUl5aGgJcSxNCDgpQVQJRXV1LUwgJBx8HBQEFFwpWCQ0BBAUBUANRVQdaVwUBSkpQSkIMV1xXXF5UDgI'
req = urllib.request.Request(url)
data = urllib.request.urlopen(req)
urllib.request.urlretrieve(url,"test.rar")

下载后打开提示如下:


于是我继续用了Requests库去下载

import requests
import os
import urllib.request

url = 'http://www.hacker.com.cn/index.php?m=content&c=down&a=download&a_k=bd8dBFECVFYCUlUBAQJbAw5VBF0MAgJVUQIICAkPBQoGBQASBQ9VQEFfQ0UMVQwCDlVRDwEDABFZQw0NAEgKCB8EBxpQBF1AX19UF1dZUEVMFFsXF0VHQB5bUVtTA0oWUl5aGgJcSxNCDgpQVQJRXV1LUwgJBx8HBQEFFwpWCQ0BBAUBUANRVQdaVwUBSkpQSkIMV1xXXF5UDgI'
f = requests.get(url)
with open("code.rar","wb") as code:
    code.write(f.content)

结果还是一样的

总结:无论是urlretrieve 还是直接open文件写入都是不对,,求解。。。
----------------------------问题已解决--------------------------------
问题反馈:
问题已解决如下:加入cookie访问下载链接,可以成功下载,附代码

import requests
import os
import re

#黑客防线杂志——杂志下载页面
info_url='http://www.hacker.com.cn/show-7-2747-1.html'

#加入headers
heads={
        'Referer': 'http://www.hacker.com.cn/show-7-2747-1.html',
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36 LBBROWSER'
        }
#保持cookie
s = requests.Session()
data = s.get(info_url)
data = data.text

#正则提取下载地址
pattern = re.compile('

<h5 class="tit">下载地址</h5>

.*?<li><a href=\'(.*?)\' target.*?',re.S)
download_page = re.findall(pattern,data)
download_page = download_page[0]
r= s.get(download_page)
r = r.text

#进入下载地址后,再次正则提取下载链接
pattern_down = re.compile('<a href="(.*?)" class="xzs_btn"></a>',re.S)
download_url = re.findall(pattern_down,r)
download_url = download_url[0]

download_url = 'http://www.hacker.com.cn/index.php'+download_url

file = s.get(download_url)

#二进制形式写入文件
with open('mybook.rar','wb') as code:
    code.write(file.content)

浏览器打开参数错误,这个时候,你用文本编辑器打开就会发现是一个 HTML 文件了

直接用浏览器打开你下载的网址,发现这并不是一个rar文件哦,返回的是一个网页

如果这的确是一个rar文件的话,或许需要登录,在请求中加入COOKIE才能下载

玩蛇网文章,转载请注明出处和文章网址:http://www.iplaypy.com/wenda/wd18502.html

相关文章 Recommend

玩蛇网Python互助QQ群,欢迎加入-->: 106381465 玩蛇网Python新手群
修订日期:2017年06月08日 - 00时04分10秒 发布自玩蛇网

我要分享到:

必知PYTHON教程 Must Know PYTHON Tutorials

必知PYTHON模块 Must Know PYTHON Modules