【爬虫实战】python批量抓取csdn博主全部文章

有很多同学后台私信说出一期 批量抓取博主csdn文章 相关的案例教程,要求:

  1. 只需配置博主文章链接;
  2. 可以配置多个;
  3. 保存成html;
  4. 不能影响在浏览器上打开时的排版;
  5. 打包成exe;

这个案例与之前的csdn案例1有所不同,案例1是根据收集好的文章id去抓取,这次的案例是抓取指定博主的csdn全部文章,该案例修复了案例1中存在已知问题,是案例1的升级版;

案例1版本文章链接如下:
批量下载csdn文章-案例1

最终效果

安装 python3

到官网下载 python 3.8.x 版本安装包,根据提示安装(windows 请勾选添加环境变量复选框)

注意:python3.8.x,不能是 3.9+
安装阿里云镜像源加速:
如果安装完 python 下载依赖包特别慢,请配置阿里镜像源
pip3 config set global.index-url https://mirrors.aliyun.com/pypi/simple/

编写代码

def start_requests(page, username):
    print(f"开始请求第{page}页...")
    ...
    
    
def read_urls():

    tool.create_or_clear_folder("./html")
    config.set_config()
    with open(r"./urls.csv", "r", encoding="utf-8") as file:
        urls = file.readlines()
        for url in urls:
            url = url.replace('\n', '').replace(r" ", '')
            parsed_url = urlparse(url)

            username = parsed_url.path.split('/')[1]
            print(f"开始抓取的url为:{url}")
            start_requests(1, username)


if __name__ == '__main__':
    read_urls()

本地运行

安装项目依赖库:

pip install bs4

python3 main.py

文件说明

urls.csv: 需要爬取的文章链接,点开 urls.csv 中的一个链接看一下就知道什么意思了,如果需要爬取多个博主的文章,每个博主的链接单独放一行即可;

html: 项目允许时会在当前目录下新建一个 html 文件夹,抓取的所有文章都在该文件夹中;

dist: 打包成 exe 所输出文件夹;

打包成exe

打包成exe使用工具pyinstaller,如果对这个库不熟悉的同学可以到我的主页查看历史分享:

pyinstaller -F -c main.py (没有 main.spec 文件用此命令)
或者
pyinstaller main.spec (有 main.spec 文件用此命令)

运行过程

urls.csv文件中的放入两个待爬博主文章链接

https://blog.csdn.net/wtswts1232?type=blog
https://blog.csdn.net/dyk11111?type=blog

运行日志:

防止爬取太快被拉黑,请设置请求延迟区间(请求时根据输入的区间随机延迟n秒)
请输入延迟区间的开始时间(默认请回车): 1
请输入延迟区间的结束时间(默认请回车): 2
输入获取的页码数(回车默认-1获取全部): 1
开始抓取的url为:https://blog.csdn.net/wtswts1232?type=blog
开始请求第1页...
开始抓取: 第1页-第1篇-《2023华为od机考题库(C++)【A卷+B卷+C卷+D卷】》
开始抓取: 第1页-第2篇-《2023华为od机考 Python【A卷+B卷+C卷+D卷】》
开始抓取: 第1页-第3篇-《2023年华为OD机试最新题库(A卷&B卷&C卷&D卷)》
开始抓取: 第1页-第4篇-《2023华为OD机试真题【计算数组中心位置】【Java Python C++】》
开始抓取: 第1页-第5篇-《2023华为OD机试真题【区间交叠_贪心算法】【Python Java C++】》
开始抓取: 第1页-第6篇-《华为od机考 Python 【中位数】》
开始抓取: 第1页-第7篇-《华为od机考 C++ 【中位数】》
开始抓取: 第1页-第8篇-《华为od机考 Java 【中位数】》
开始抓取: 第1页-第9篇-《华为OD机试 C++【电梯序列】》
开始抓取: 第1页-第10篇-《华为OD机试 Python【电梯序列】》
开始抓取: 第1页-第11篇-《华为OD机试 Java【电梯序列】》
开始抓取: 第1页-第12篇-《华为OD机考 C++ 【公共字符串】》
开始抓取: 第1页-第13篇-《华为OD机考 python 【公共字符串】》
开始抓取: 第1页-第14篇-《华为OD机考 Java 【公共字符串】》
开始抓取: 第1页-第15篇-《华为od机考 C++ 【整理组合方式】》
开始抓取: 第1页-第16篇-《华为od机考 Python 【整理组合方式】》
开始抓取: 第1页-第17篇-《华为od机考 Java 【整理组合方式】》
开始抓取: 第1页-第18篇-《华为OD机考 C++ 【计算返回时间】》
开始抓取: 第1页-第19篇-《华为OD机考 Python 【计算返回时间】》
开始抓取: 第1页-第20篇-《华为OD机考 Java 【计算返回时间】》
共有34页:
触发调试配置的最大页码数1,已停止对当前链接的抓取!
开始抓取的url为:https://blog.csdn.net/dyk11111?type=blog
开始请求第1页...
开始抓取: 第1页-第1篇-《前端(二十五)——前端实现 OCR 图文识别的详细步骤与示例代码》
开始抓取: 第1页-第2篇-《优雅而高效的JavaScript——?? 运算符、?. 运算符和 ?. .运算符》
开始抓取: 第1页-第3篇-《前端(十八)——gitee上开源一个移动端礼盒商城项目(前端+后台)》
开始抓取: 第1页-第4篇-《echarts在vue3中的使用——其他页面跳转回echarts图表页面时,不显示图表的问题》
开始抓取: 第1页-第5篇-《echarts的xAxis和yAxis——x轴y轴以及网格线的详细配置》
开始抓取: 第1页-第6篇-《中级程序员——vue3+js+git面试题》
开始抓取: 第1页-第7篇-《中级程序员——uniapp和小程序面试题》
开始抓取: 第1页-第8篇-《echarts的图表立体感——实现立体柱状图和立体饼图的详细教程》
开始抓取: 第1页-第9篇-《前端(二十七)——封装指南:Axios接口、常用功能、Vue和React中的封装技术》
开始抓取: 第1页-第10篇-《前端(二十六)——常见的HTTP异常状态码以及正反向代理配置》
开始抓取: 第1页-第11篇-《在uni-app中使用ECharts - 配置四种不同的图表》
开始抓取: 第1页-第12篇-《深度理解事件流和DOM事件流的工作原理》
开始抓取: 第1页-第13篇-《前端(二十四)——轮询与 WebSocket的battle》
开始抓取: 第1页-第14篇-《前端(二十三)——轮询和长轮询》
开始抓取: 第1页-第15篇-《前端(二十二)——前端工程化》
开始抓取: 第1页-第16篇-《前端(二十一)——WebSocket:实现实时双向数据传输的Web通信协议》
开始抓取: 第1页-第17篇-《前端(二十)——Vite和Webpack:前端开发中常用的构建工具》
开始抓取: 第1页-第18篇-《前端(十九)——vue_react脚手架的搭建方式》
开始抓取: 第1页-第19篇-《优雅而高效的JavaScript——try...catch语句(js异常处理)》
开始抓取: 第1页-第20篇-《优雅而高效——立即执行函数表达式()();》
共有8页:
触发调试配置的最大页码数1,已停止对当前链接的抓取!

注意事项

本代码是在 mac 系统上开发的,如果在 windows 系统中运行报了目录相关的异常,请按照 windows 系统目录规则修改相关路径即可,常规修改方式“/”修改为“\\”,网上很多相关帖子,可自行搜索。

完整代码、项目说明文档、爬取结果数据csv文件、exe文件都放入源码包中;文章最后可获取;

获取完整源码

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玛卡`三少

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值