python批量下载csdn文章

2023-11-19

声明:该爬虫只可用于提高自己学习、工作效率,请勿用于非法用途,否则后果自负

功能概述:

  1. 根据待爬文章url(文章id)批量保存文章到本地;
  2. 支持将文中图片下载到本地指定文件夹;
  3. 多线程爬取;

1.爬取效果展示

本次示例爬取的链接地址:
https://blog.csdn.net/m0_68111267/article/details/132574687

原文效果:

爬取效果:

文件列表:

2.编写代码

爬虫使用scrapy框架编写,分布式、多线程

2.1编写Items

class ArticleItem(scrapy.Item):

    id = scrapy.Field()  # ID
    title = scrapy.Field()
    html = scrapy.Field()  # html


class ImgDownloadItem(scrapy.Item):

    img_src = scrapy.Field()
    img_name = scrapy.Field()
    image_urls = scrapy.Field()


class LinkIdsItem(scrapy.Item):

    id = scrapy.Field()

2.2添加管道



class ArticlePipeline():

    def open_spider(self, spider):
        if spider.name == 'csdnSpider':

            data_dir = os.path.join(settings.DATA_URI)
            #判断文件夹存放的位置是否存在,不存在则新建文件夹
            if not os.path.exists(data_dir):
                os.makedirs(data_dir)
            self.data_dir = data_dir

    def close_spider(self, spider):  # 在关闭一个spider的时候自动运行
        pass
        # if spider.name == 'csdnSpider':
        #     self.file.close()

    def process_item(self, item, spider):
        try:
            if spider.name == 'csdnSpider' and item['key'] == 'article':
                info = item['info']
                id = info['id']
                title = info['title']
                html = info['html']

                f = open(self.data_dir + '/{}.html'.format(title),
                         'w',
                         encoding="utf-8")
                f.write(html)
                f.close()
        except BaseException as e:
            print("Article错误在这里>>>>>>>>>>>>>", e, "<<<<<<<<<<<<<错误在这里")
        return item

2.3添加配置

2.4添加解析器


    ...
    
    def parse(self, response):
        html = response.body
        a_id = response.meta['a_id']
        soup = BeautifulSoup(html, 'html.parser')

        [element.extract() for element in soup('script')]
        [element.extract() for element in soup.select("head style")]
        [element.extract() for element in soup.select("html > link")]

        # 删除style中包含隐藏的标签
        [
            element.extract() for element in soup.find_all(
                style=re.compile(r'.*display:none.*?'))
        ]
        
        ...

3.获取完整源码

项目说明文档

爱学习的小伙伴,本次案例的完整源码,已上传微信公众号“一个努力奔跑的snail”,后台回复“csdn”即可获取。

源码地址:

https://pan.baidu.com/s/1uLBoygwQGTSCAjlwm13mog?pwd=****

提取码: ****

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python批量下载csdn文章 的相关文章

  • Python:在列表理解本身中引用列表理解?

    这个想法刚刚出现在我的脑海中 假设您出于某种原因想要通过 Python 中的列表理解来获取列表的唯一元素 i if i in created comprehension else 0 for i in 1 2 1 2 3 1 2 0 0 3
  • 没有名为 crypto.cipher 的模块

    我现在正在尝试加密一段时间 我最近得到了这个基于 python 的密码器 名为PythonCrypter https github com jbertman PythonCrypter 我对 Python 相当陌生 当我尝试通过终端打开 C
  • 通过 Scrapy 抓取 Google Analytics

    我一直在尝试使用 Scrapy 从 Google Analytics 获取一些数据 尽管我是一个完全的 Python 新手 但我已经取得了一些进展 我现在可以通过 Scrapy 登录 Google Analytics 但我需要发出 AJAX
  • Python 的键盘中断不会中止 Rust 函数 (PyO3)

    我有一个使用 PyO3 用 Rust 编写的 Python 库 它涉及一些昂贵的计算 单个函数调用最多需要 10 分钟 从 Python 调用时如何中止执行 Ctrl C 好像只有执行结束后才会处理 所以本质上没什么用 最小可重现示例 Ca
  • 将数据从 python pandas 数据框导出或写入 MS Access 表

    我正在尝试将数据从 python pandas 数据框导出到现有的 MS Access 表 我想用已更新的数据替换 MS Access 表 在 python 中 我尝试使用 pandas to sql 但收到错误消息 我觉得很奇怪 使用 p
  • 将 Matplotlib 误差线放置在不位于条形中心的位置

    我正在 Matplotlib 中生成带有错误栏的堆积条形图 不幸的是 某些层相对较小且数据多样 因此多个层的错误条可能重叠 从而使它们难以或无法读取 Example 有没有办法设置每个误差条的位置 即沿 x 轴移动它 以便重叠的线显示在彼此
  • 使 django 服务器可以在 LAN 中访问

    我已经安装了Django服务器 可以如下访问 http localhost 8000 get sms http 127 0 0 1 8000 get sms 假设我的IP是x x x x 当我这样做时 从同一网络下的另一台电脑 my ip
  • OpenCV Python cv2.mixChannels()

    我试图将其从 C 转换为 Python 但它给出了不同的色调结果 In C Transform it to HSV cvtColor src hsv CV BGR2HSV Use only the Hue value hue create
  • Python(Selenium):如何通过登录重定向/组织登录登录网站

    我不是专业程序员 所以请原谅任何愚蠢的错误 我正在做一些研究 我正在尝试使用 Selenium 登录数据库来搜索大约 1000 个术语 我有两个问题 1 重定向到组织登录页面后如何使用 Selenium 登录 2 如何检索数据库 在我解决
  • PyUSB 1.0:NotImplementedError:此平台不支持或未实现操作

    我刚刚开始使用 pyusb 基本上我正在玩示例代码here https github com walac pyusb blob master docs tutorial rst 我使用的是 Windows 7 64 位 并从以下地址下载 z
  • 如何使用 OpencV 从 Firebase 读取图像?

    有没有使用 OpenCV 从 Firebase 读取图像的想法 或者我必须先下载图片 然后从本地文件夹执行 cv imread 功能 有什么办法我可以使用cv imread link of picture from firebase 您可以
  • 在Python中获取文件描述符的位置

    比如说 我有一个原始数字文件描述符 我需要根据它获取文件中的当前位置 import os psutil some code that works with file lp lib open path to file p psutil Pro
  • Pygame:有没有简单的方法可以找到按下的任何字母数字的字母/数字?

    我目前正在开发的游戏需要让人们以自己的名义在高分板上计时 我对如何处理按键有点熟悉 但我只处理过寻找特定的按键 有没有一种简单的方法可以按下任意键的字母 而不必执行以下操作 for event in pygame event get if
  • 在f字符串中转义字符[重复]

    这个问题在这里已经有答案了 我遇到了以下问题f string gt gt gt a hello how to print hello gt gt gt f a a gt gt gt f a File
  • Fabric env.roledefs 未按预期运行

    On the 面料网站 http docs fabfile org en 1 10 usage execution html 给出这个例子 from fabric api import env env roledefs web hosts
  • 解释 Python 中的数字范围

    在 Pylons Web 应用程序中 我需要获取一个字符串 例如 关于如何做到这一点有什么建议吗 我是 Python 新手 我还没有找到任何可以帮助解决此类问题的东西 该列表将是 1 2 3 45 46 48 49 50 51 77 使用
  • 如何计算 pandas 数据帧上的连续有序值

    我试图从给定的数据帧中获取连续 0 值的最大计数 其中包含来自 pandas 数据帧的 id date value 列 如下所示 id date value 354 2019 03 01 0 354 2019 03 02 0 354 201
  • Python 类继承 - 诡异的动作

    我观察到类继承有一个奇怪的效果 对于我正在处理的项目 我正在创建一个类来充当另一个模块的类的包装器 我正在使用第 3 方 aeidon 模块 用于操作字幕文件 但问题可能不太具体 以下是您通常如何使用该模块 project aeidon P
  • 如何将输入读取为数字?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 Why are x and y下面的代码中使用字符串而不是整数 注意 在Python 2
  • Statsmodels.formula.api OLS不显示截距的统计值

    我正在运行以下源代码 import statsmodels formula api as sm Add one column of ones for the intercept term X np append arr np ones 50

随机推荐

  • 使用NDK编译C/C++文件生成在安卓中的可执行文件

    使用NDK编译C C 文件生成在安卓中的可执行文件 需求 要编译一个C文件 然后将他运行到安卓手机中 通过这个可执行文件可以获取一些硬件的参数信息 或者对已经有的信息进行修改 从而达到我们想要的效果 相关知识点记录 NDK Native D
  • HTTP POST请求json数据量过大的问题

    与第三方合作 需要提供数据上传接口给他们 联调时被他们的单条json数据量困扰到了 第三方接口联调 一条7M的json上传给我们 毫无意外的报错了 实体数据量太大 该如何修改以便适应大数据量的上传呢 在代码层面想不到解决方案 于是查看配置
  • GitHub Actions自动化部署+定时百度链接推送

    前言 最近用VuePress搭建了一个静态网站 由于是纯静态的东西 每次修改完文章都要重新打包上传很是麻烦 虽然vuepress theme vdoing主题作者提供了GitHub Actions自动化部署的教程文章 但是过于简陋且是19年
  • 在小项目中实践领域驱动设计(含详细代码和实践过程) #CSDN博文精选# #IT# #项目实践#

    大家好 小C将继续与你们见面 带来精选的CSDN博文 又到周一啦 上周的系统化学习专栏已经结束 我们总共一起学习了20篇文章 这周将开启全新专栏 放假不停学 全栈工程师养成记 在这里 你将收获 将系统化学习理论运用于实践 系统学习IT技术
  • 为什么Java不支持多继承,却搞了个Interface出来?

    多继承的问题在于无法找到一个合理的规则去初始化基类的数据 菱形继承中 两个子类分别调用父类构造函数进行初始化时 到底该调用谁 都调用的话 谁先谁后 C 的解决方案把这个问题丢给了使用者 也就是孙类 似乎是解决了问题 可是它忽视了子类并没有虚
  • 阿里巴巴编码规范习题

    因为工作需要 公司组里要求考阿里巴巴编程规范 于是我花了一天的时间看了一遍 然后刷了一些题 终于在第三次的时候考过了 考试是基于 阿里巴巴Java开发手册 一共50道题目 包括多选和单选 题目都是选择题 目前阿里云编程规范是出到V1 5 0
  • 算法:深度优先遍历和广度优先遍历

    什么是深度 广度优先遍历 图的遍历是指 从给定图中任意指定的顶点 称为初始点 出发 按照某种搜索方法沿着图的边访问图中的所有顶点 使每个顶点仅被访问一次 这个过程称为图的遍历 遍历过程中得到的顶点序列称为图遍历序列 图的遍历过程中 根据搜索
  • 类的数组成员变量的初始化

    使用STL标准模板库之后 编程时已经很少使用数组和指针 相反 多使用序列容器vector代替之 但事实并不这么理想 在迫不得已的情况下 我们还是会选择使用数组 这里介绍一下当数组作为类的成员变量时 应该怎么对它 数组 进行初始化 在类的构造
  • 日志LOG

    一 引言 1 1 日志介绍 用于记录系统中发生的各种事件 记录的位置常见的有 控制台 磁盘文件等 1 2 日志级别 日志级别从低到高 TRACE 堆栈 DEBUG 调试期 INFO 运行期 WARN 警告 ERROR 错误 FATAL 严重
  • 微信小程序实现一个遮罩层

    微信小程序实现遮罩层 开发中 遮罩层的使用场景很多 例如 loading的时候 例如搜索的时候等 以下是一个案例 点击页面的搜索框 在页面上添加一层遮罩层 显示搜索详情页 页面搜索框如下 页面最上面有一个搜索框 下面有一些其他UI元素
  • 微软解释关于Windows 10 收集用户数据那点事

    微软 Microsoft 在周一时发布关于Win10 收集用户数据的新细节 试图停止这场争议 早前 该软件巨头确认Win10收集用户数据并发送给微软 并声称这是用于改善整体用户体验 然而 这引发了人们对用户隐私以及用何种方式收集数据的关注
  • int、long、long long取值范围

    unsigned int 0 4294967295 int 2147483648 2147483647 unsigned long 0 4294967295 long 2147483648 2147483647long long的最大值 9
  • 美团外卖推荐关于用户新颖体验优化的技术探索

    外卖场景下 用户 复购 属性强 下单频次高 既想下单老商家 也会想换换 新口味 为更好平衡用户的复购 尝新体验 外卖推荐团队从2022年起开始持续投入 构建了外卖场景新颖性推荐的体系化解决方案 截止目前 外卖首页用户曝光新颖性累计提升19
  • 安装anconda以及在pycharm使用

    安装anconda 下载安装 配置虚拟环境需要通过anaconda来完成 anaconda的下载地址为 https docs conda io en latest miniconda html windows用户下载python3 8的mi
  • 蓝牙之四-Handler

    Handler机制 Handler允许用户发送和处理Message以及线程MessageQueue相关的可运行对象 每个Handler实例都对应一个单线程以及该线程的MessageQueue 当创建新的Handler时 该Handler将被
  • Kali搭建DVWA——Web靶场

    博主主站地址 微笑涛声 www cztcms cn 一 DVWA介绍 1 DVWA简介 DVWA是一款基于PHP和MYSQL开发的web靶场练习平台 集成了常见的web漏洞如sql注入 XSS 密码破解等常见漏洞 旨在为安全专业人员测试自己
  • SDL无法打开音频设备的问题:Couldn‘t open audio/video device: No available audio/video device

    解决中标麒麟下SDL无法打开音频设备的问题 root登录 首先就是一定要用root登录 这个可能是权限问题 否则后面实验不能成功 安装ALSA库 首先下载alsa lib https www alsa project org main in
  • [数据结构(C语言)]单链表的定义,实现初始化、创建、插入、增、删、改、查等基本操作

    建议新人收藏使用 首先 让我们回顾一下顺序表的优缺点 1 优点 随机存取 存储空间利用率高 2 缺点 插入 删除效率低 必须按事先估计的最大元素个数分配连续的存储空间 难以临时扩大 采用链式存储结构的线性表称为链表 链表有单链表 循环链表和
  • Stream流将list中对象的属性按照小时进行分组

    需求是这样的 给了一个日期时间区间 一个对象list 要统计这个时间段内每天某个小时段的数据量之和 如图 刚开始思路是把时间区间按每个小时进行拆分 得到这段时间每个小时的开始结束时间跟list对象进行比对后在进行整合计算 发现代码会很臃肿
  • python批量下载csdn文章

    声明 该爬虫只可用于提高自己学习 工作效率 请勿用于非法用途 否则后果自负 功能概述 根据待爬文章url 文章id 批量保存文章到本地 支持将文中图片下载到本地指定文件夹 多线程爬取 1 爬取效果展示 本次示例爬取的链接地址 https b