爬虫入门—数据解析基础 bs4库使用之红楼梦全文文本爬取


Author: Labyrinthine Leo   Init_time: 2021.02.23


Key Words: SpiderBeautifulSoup


公众号:Leo的博客城堡

欢迎各位读者关注公众号:Leo的博客城堡,如有任何问题,可以私聊博主!



1、需求分析

需求:在上一节中,我们大概了解BeautifulSoup库的基本使用,这一节我们将使用bs4库进行实战,对诗词名句网的红楼梦小说文本内容进行爬取,包括每一章的标题和内容,并将所有内容保存到本地文本文件中。

分析

  1. 首先,我们通过https://www.shicimingju.com/book/hongloumeng.html进入诗词名句网的红楼梦小说主页,如下图所示。其中包含每一章的标题信息,同时我们需要每个章节对应的内容。查看页面源码,会发现,每一个标题标签对应着一个url链接,这样我们只需对此页面内所有章节的链接提取即可获得每一个章节对应的页面。

  1. 打开对应链接,发现章节内容即在源码中,我们对对应标签的文本信息进行提取即可。

  1. 打开开发者模式,可以发现每一个章节对应的url其实就是索引号不同,很方便即可获取。

  1. 关键点在于使用bs4库对每个章节的对应链接进行提取,并访问对应页面,对页面中的章节内容进行提取即可。

  2. 基础的流程已经分析清楚,接下来便可动手编码了。

2、编码

# coding  : utf-8
# fun     : 爬取红楼梦小说所有的章节标题和章节内容 https://www.shicimingju.com/book/hongloumeng.html
# @Author : Labyrinthine Leo
# @Time   : 2021.02.01import requests
import json
from bs4 import BeautifulSoupdef book_spider(url):"""爬取红楼梦文本信息:param url: 网站url:return:"""# 1.指定urlurl = url# 2.UA伪装headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36'}# 3.发送请求&获取响应数据page_text = requests.get(url=url, headers=headers)page_text.encoding = page_text.apparent_encoding # 获取编码page_text = page_text.text# 4.对text页面进行章节标题文本提取并获取每个章节对应的url链接soup = BeautifulSoup(page_text, 'lxml')aTagList = soup.select('.book-mulu li > a') # 获取a标签信息titleList = [i.text for i in aTagList] # 获取a标签中的文本信息urlList = [i["href"] for i in aTagList] # 获取s标签中每个章节的url# 5.保存章节内容with open('./红楼梦.txt', 'w', encoding='utf-8') as fp:fp.write("红楼梦\n") # 写入标题for chp in zip(titleList, urlList):write_chapter(chp)print("已成功下载红楼梦全文!")def write_chapter(content_list):"""将每章节信息提取并写入txt文本:param content_list::return:"""# 获取标题和链接title, url = content_listintact_url = "https://www.shicimingju.com" + url# UA伪装headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36'}# 发送请求&获取响应信息page_text = requests.get(url=intact_url, headers=headers, timeout=10)page_text.encoding = page_text.apparent_encoding  # 获取编码page_text = page_text.text# 构建soup对象进行解析文本soup = BeautifulSoup(page_text,'lxml')content = soup.select('.chapter_content')txt = "" # 构建文本字符串for i in content:txt += i.text# 持久化存储with open('./红楼梦.txt', 'a', encoding='utf-8') as fp:fp.write(title+'\n') # 写入标题fp.write(txt+'\n') # 写入章节内容# print("已成功下载{}内容".format(title.split('·')[0]))print("已成功下载内容:{}".format(title))if __name__ == '__main__':# 指定urlurl = "https://www.shicimingju.com/book/hongloumeng.html"# 爬取文本信息book_spider(url)

运行结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Mh80EDD7-1614090048751)(https://cdn.jsdelivr.net/gh/LabyrinthineLeo/CloudImgs@master/data/红楼梦文本_06.png)]

同时,博主将其全文内容保存到txt文本中:


临渊羡鱼不如退而结网
创作不易,如果您觉得这篇文章对你有用,可以点个赞,算是对笔者的支持和激励!这里是Leo的博客城堡,以Python为核,ML&DL为主,泛之形形色色,输寥寥拙见,摄浮光掠影,讲三两故事。临渊羡鱼,不如退而结网,持续干货输出,有趣的灵魂值得你的关注!
原文可以去笔者的github主页:https://github.com/LabyrinthineLeo/Yxs_Git_Learning_repos查看(如果可以,点个star也无妨呀,嘿嘿)。



爬虫入门—数据解析基础 bs4库使用之红楼梦全文文本爬取相关推荐

  1. Python爬虫 之数据解析之bs4

    数据解析之bs4 一.bs4进行数据解析 二.bs4库和lxml库的安装 三.BeautifulSoup对象 四.项目实例 一.bs4进行数据解析 1.数据解析的原理 ① 标签定位. ② 提取标签.标 ...

  2. beautifulsoup解析动态页面div未展开_Python爬虫 | 0xb 数据解析:PyQuery库

    (给抠腚男孩加星标,提升Python.Android技能) 作者:CoderPig 本节带来数据解析部分最后一个解析库PyQuery,它的API和前端著名框架jQuery相似,名字由此而来.如果你有前 ...

  3. Python爬虫入门教程【4】:美空网未登录图片爬取

    美空网未登录图片----简介 上一篇写的时间有点长了,接下来继续把美空网的爬虫写完,这套教程中编写的爬虫在实际的工作中可能并不能给你增加多少有价值的技术点,因为它只是一套入门的教程,老鸟你自动绕过就可 ...

  4. 【Python爬虫】数据解析之bs4解析和xpath解析

  5. 【网络爬虫入门02】HTTP客户端库Requests的基本原理与基础应用

    [网络爬虫入门02]HTTP客户端库Requests的基本原理与基础应用 广东职业技术学院  欧浩源 2017-10-15  1.引言 实现网络爬虫的第一步就是要建立网络连接并向服务器或网页等网络资源 ...

  6. 爬虫入门—requests模块基础之药监企业信息爬取

    爬虫入门-requests模块基础之药监企业信息爬取 Author: Labyrinthine Leo   Init_time: 2021.02.22 Key Words: Spider.reques ...

  7. python网络爬虫的基本步骤-python爬虫入门需要哪些基础/python 网络爬虫教程

    如何入门 Python 爬虫 入门个吊,放弃 python爬虫入门需要哪些基础 现在之所以有多的小伙伴热衷于爬虫技术,无外乎是因为爬我们做很多事情,比如搜索引擎.采集数据.广告过滤等,以Python为 ...

  8. python爬虫知识大全_Python爬虫入门有哪些基础知识点

    1.什么是爬虫 爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓取下来.想抓取什么?这个由你来控制它咯. ...

  9. python爬虫入门教程--优雅的HTTP库requests(二)

    requests 实现了 HTTP 协议中绝大部分功能,它提供的功能包括 Keep-Alive.连接池.Cookie持久化.内容自动解压.HTTP代理.SSL认证等很多特性,下面这篇文章主要给大家介绍 ...

最新文章

  1. LINUX下SVN命令大全
  2. 《LeetCode力扣练习》第96题 不同的二叉搜索树 Java
  3. Java学习笔记-包装类
  4. JQuery + jquery插件
  5. HTML form的一些属性(第一版)
  6. 评论:中国企业向Faceook学习什么
  7. 查看Ubuntu中的ip地址
  8. 如何自定义FusionCharts图表上的工具提示?
  9. android学习——popupWindow 在指定位置上的显示
  10. 神经网络激活函数的作用是什么?
  11. 图形化VS201x工程中的项目依赖关系
  12. 如何用matlab进行多元函数偏导数计算
  13. 惠普HP Laser MFP 137fnw 一体机驱动
  14. 【WSL2教程】WSL迁移到非系统盘
  15. [画板]画PCB和玩植物大战僵尸
  16. 共模电感的原理以及使用情况
  17. 移动机器人下位机软件
  18. ios dat 文件读写_iOS数据恢复前沿探索
  19. 小学生计算机课的演讲稿,小学生课前三分钟演讲稿范文5篇
  20. 目标检测算法评价指标之mAP

热门文章

  1. 安全模式检测计算机,开启office安全模式以检查问题
  2. 比特彗星端口阻塞 虚拟服务器,比特彗星端口阻塞怎么设置 亮黄灯解决方法
  3. (2019年10月更新) Android 最全的底部导航栏实现方法
  4. 全球公认的健康作息时间
  5. 趋势科技PC-cillin2015,你来公测我发奖!
  6. 面试技巧(为了自己方便,原文转至https://blog.csdn.net/dkh_321/article/details/79311469)
  7. CSS---background属性及其属性值
  8. 网线/水晶头/RJ45 网线线序
  9. python round()函数的使用
  10. shell编程-初始shell及变量