问题描述
在CSDN中,以会员登录,正常点击此按钮即可下载文件
在不久之前,点击此按钮对应的 a 标签对应的 url,也可以达到同样的效果,下载文件,如下图所示
一直可以按照这个 url 来爬取文件,但是最近可能采取了某些措施,使点击下面的url下载不到文件了,也就是爬虫爬下面那个url也爬不到文件了,返回的是一个 404 网页。
相关代码
使用的 python 的 requests 库。
这是爬虫类里面的用于下载的函数。
def download(self, remote_url, local_dir):
# 1.是否登录
if not self.__is_logined:
self.__login()
# 下载次数+1
self.download_count += 1
count = 0
while count < 3:
count += 1
# 2.解析真实下载URL
html_text = self.__session.get(remote_url).text
html = BeautifulSoup(html_text, "html5lib")
real_url = html.find("a", id="vip_btn").attrs["href"]
# 3.下载
source = self.__session.get(real_url)
# 3.1获取下载名
filename = re.findall(r".*\"(.*)\"$", source.headers.get("Content-Disposition", "\"None\""))[0]
if filename == "None":
continue
filename = re.sub("\s", "_", filename)
# 3.2创建本地文件
if not os.path.exists(local_dir):
os.makedirs(local_dir)
_local_path = local_dir + filename
# 3.3分段下载
local_file = open(_local_path.encode("utf-8"), "wb")
for file_buffer in source.iter_content(chunk_size=512):
if file_buffer:
local_file.write(file_buffer)
return _local_path
return None
按照上面的代码运行,返回的是一个 404 网页,求助大神如何正确爬到文件~~
看看header 是不是缺少cookie 或者相关参数