CSDN文件爬虫

问题描述

在CSDN中,以会员登录,正常点击此按钮即可下载文件
clipboard.png
在不久之前,点击此按钮对应的 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 网页,求助大神如何正确爬到文件~~

阅读 1.9k
1 个回答

看看header 是不是缺少cookie 或者相关参数

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题