# 前言
前面一篇笔记记录了 Python 如何安装 bs4 模块,以及简单的 bs4 爬取重庆能源职业学院新闻中心页面所有 url。
详见:点击跳转
# 实战笔趣阁正文爬取
# 相关介绍
本文爬取笔趣阁小说:点击跳转
爬取的第一章节:点击跳转
# 源代码参考
仅爬虫文章,不去除正文内的广告那些 执行结果:
import requests | |
from bs4 import BeautifulSoup | |
from urllib.request import Request, urlopen | |
# 创建一个会话对象 | |
session = requests.session() | |
# 设置请求的 URL | |
host = "https://www.bqgam.com/index/11303/" | |
# 设置请求的页面 | |
page = "https://www.bqgam.com/index/11303/1.html" | |
def requestUrl(url): | |
# 设置请求头 | |
headers = { | |
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.84 Safari/537.36', | |
} | |
# 创建请求对象 | |
req = Request(url, headers=headers) | |
# 打开 URL | |
html = urlopen(req) | |
# 读取 HTML 内容并解码为 utf-8 格式 | |
html = html.read().decode('utf-8') | |
# 返回 HTML 内容 | |
return html | |
# 这里下面开始的部分根据你爬取的实际网页标签进行修改 | |
def getPage(page): | |
# 获取网页的 html 数据 | |
html = requestUrl(page) | |
# 加载 html 文档为 soup 结构 | |
soup = BeautifulSoup(html, "html.parser") | |
# 查找章节列表 <h1 class="wap_none"> | |
h1_elements = soup.find_all('h1', attrs={'class': 'wap_none'}) | |
# 正文 <div class="Readarea ReadAjax_content"> | |
p_elements = soup.find_all('div', attrs={'class': 'Readarea ReadAjax_content'}) | |
# 终端打印章节标题 | |
for h1 in h1_elements: | |
print("本文标题", h1.text) | |
# 终端打印正文内容 | |
for p in p_elements: | |
print("本文正文:", p.text) | |
getPage(page) |
输出:
本文标题 第1章:我是一个无敌倒霉的主角 | |
本文正文: “砰”“砰”“砰”“砰” “……” “砰”“砰——” 这是元旦的清晨,第一住院大楼旁边传来什么东西摔碎的声音,不多不少,正好十八声。 而这在这十八声过后,众人再向地面看去时,发现大楼旁边的地面上七零八碎的碎了十八个花盆。 粉身碎骨的那种碎,一眼就看的出是从高层摔下来的。 而这十八个粉身碎骨的花盆竟然诡异的连成了一道歪歪扭扭的直线,在这直线的尽头站着一个穿着白大褂的青年。 顾眠,男,二十二岁,联华医院的外科实习医生,大家都爱叫他顾医生。 当然,他还有个更加风靡的外号——天煞孤星。 顾眠此人来自孤儿院,身高一米八几,长了张富婆十分乐意包养的脸,本该是祖国未来的花朵,但这花朵愣是差点被他自己那诡异的运气折了。 车祸,爆炸,沉船,食物中毒这些小事他全都经历过,当然还有更过分的。 比如说十八个花盆连续照着头掉下来。 顾眠拍拍白大褂,又抬头看了眼那没能命中自己的头的十八个花盆:“大家散了吧,没什么好看的。” 周围的路人显然是被这十八个粉碎花盆唬住了。 过了许久,一个大爷才梗着脖子开口:“怎么能算了呢 | |
?这是谋杀吧!” 顾眠叹口气,如果这就算谋杀的话,那自己从出生开始所经历的每一天都是活生生的“荆轲刺秦”。 火车脱轨,二十八辆汽车连环追尾,天然气泄露,瓦斯气爆炸,杀人魔房东,幼儿园午睡掀旁边小女孩的裙子却发现里面有个**…… 这 | |
些他全都经历过。 所以十八个花盆照着自己的头砸下来其实也不算很过分对吧? 顾眠好不容易才安抚好慌乱的路人,却在转角处猝不及防的遭遇了生活的下一次刺杀。 他已经习惯了,因为他深知自己的每一个转角都藏着一个伺机而动的刺客。 那是一个身长五米,高一米半,有巨大的眼睛,长相肖似面包车的刺客——那好像就是面包车。 这方方方正正的座驾从拐角后冲出,长了眼睛一般径直的冲着顾眠加速狂奔而来,没有任何要停下的意思。 它红彤彤的车灯像是怒目圆睁的眼睛,尖锐的喇叭嘶鸣着,好像驾驶座上的司机正用了所有的力气来拍喇叭一样。 来了,车祸刺杀。 看见这怒目圆睁的面包车,顿时街上所有的病人和家属都仓皇着向旁边跑去;甚至有伤了腿的伤患无药自愈,此人一扔拐杖,拿出马拉松冲刺的架势拼了命的就冲着旁边花坛跳去,堪称医学奇迹。 “快跑啊!”此时有人注意到了正在面包车行驶轨迹上的那个医生。 顾眠也想逃跑。 但多年的被刺杀经验告诉他,如果自己提前逃跑的话,这辆失控的车绝对也会在半路上拐个离奇的弯继续冲着自己漂移过来。 人们便眼睁睁的看着那辆失控了的车冲着一个似乎被吓呆了的医生冲过去。 但预想中血肉横飞的局面没没有出现。 只见这医生身手了得,就在那辆车几乎要撞上去的时候,竟然使出了类似于凌波微步的轻功——说得通俗一点就是往后跳。 顾眠这一跳,愣是把即将上演的温香软玉抱满怀变成了擦肩而过。 惊得周围的人都闪了脖子。 车子在面前呼啸而过。 顾眠松一口气,然后又向旁边梗了脖子的人们重复了一遍他这辈子已经重复过无数次的话:“行了行了,没什么好看的,都散了吧。” 这次的人散的倒是快,大家似乎也嗅到了空气中的倒霉味儿,生怕自己一不小心也沾染了霉运,纷纷四散离开。 此时那破面包车已经冲出去十米开外,好不容易才停了下来,从上面滚下来一个胖子,满头大汗,应该是司机。 “不好意思啊小兄弟!”胖子气喘吁吁的跑过来道歉,“ 这破车突然刹不住了。” 显然这胖子自己也受到了不小的惊吓,但还是迅速跑过来观察顾眠有没有受伤。 看见人没有大碍之后,他才松了一口气,转而抬头看向这位差点被自己撞死的医生的脸。 不料这差点死于非命的医生竟然一点都没虚,仍然气定 神闲,仿佛笃定车和他撞上死的会是车一样。 胖子噎了一下。 这怕不是医生,是个偷了白大褂跑出来的神经病吧? 顾眠的视线在这胖子神奇的表情上转了一圈,并没有索要精神损失费的想法,他拍拍白大褂:“如果没事的话我就先走了。” “有事 ,有事。”顾眠刚一转身,就被胖子一把拉住了,“小兄弟你真不打算做个检查之类的?” 顾眠摇头,完全不用。 得到他否定的答案后,胖子又迟疑着开口:“好吧,小兄弟你知不知道神经外科在哪栋楼上,有个妹子打电话说精神外科办公室的洗手盆掉下来了,我是来修洗手盆的。” 虽然刚才差点撞到人,但好歹还没忘记本职工作。 顾眠停下来看他一眼:“正好我带你去吧。” 胖子立刻回到自己的车里掏出工具包来:“您真是我见过的最通情理的受害者了。” 顾眠:“……” 胖子紧跟着顾眠进了第一 住院大楼,来到电梯跟前。 这大胖子看起来一点都不虚,他手头的提包里有个一米半左右的冲击电钻,看起来足足有十斤左右那么沉。 电钻手把上包了一张报纸,大概是为了保持整洁,也不知道这报纸是什么年代的,已经开始泛黄。 顾眠依稀可以看见上面一个诺大的标题—— “某高校一初中班级发生火灾,二十九人遇难。” 此时电梯已经下来,顾眠抬脚上去,胖子也连忙跟了上去。 神经外科在十八楼,顾眠伸手按下了十八层的按钮。 一个医生跟一个胖子好像没什么可以聊的。 二人都不说话,电梯中的气氛顿时诡异起来。 但马上顾眠就发现这气氛并不算什么,因为更诡异的事情在后面。 一个黑色的半透明的面板突然出现在他面前,并不是小说里的系统之类的东西。 因为此时面板上正噼里啪啦的蹦出几行字让人难以理解的字来。 【欢迎来到全球进化游戏,本游戏由地球发起,玩家为全人类】 【经检测,全球百分之九十九的人类不符合宇宙生物标准规格,本游戏旨在通过游戏帮助人类进化】 【地球现已变成大型生存游戏,全球将产生无数副本售票亭,玩家可前往售票亭随机匹配副本,完成副本可提升自身素质等】 【当剩余人类总体素质达标时,本游戏将自动关闭】 【点击进入游戏】 顾眠的脑回路早就被生活荼毒的与正常人两异,此时他兴奋起来,斜眼看了下旁边的胖子,果然胖子面前也有块面板。 但似乎哪里不大一样…… 顾面视力很好,当然是为了防止来自生活的诡异刺杀。 只见胖子的的面板和他大不相同! 在【点击进入游戏】前面还有几行字。 【在副本中玩家死亡不会真实死亡,但将会损失一定个人物品,包括属性点等】 【游戏中疼痛程度将不会减轻,昏迷保护机制仍然存在】 虽然只多了几行字,但内容却大不相同。 “不会真实死亡……” 这是要让全球玩家开心快乐的玩游戏啊。 等等,为什么我没有这几行字? 意思就是别的玩家在副本里死亡都是假死,换自己就是真死了? 生活为了搞死我已经做到如此丧心病狂的地步了吗! 似乎是害怕出什么意外一样,很快,面前的面板上刷新了两行字。 【游戏程序正在启动……】 【载入中……】 请收藏本站:https://www.bqgam.com。笔趣阁手机版:https://m.bqgam.com | |
『点此报错』『加入书签』 |
# 去除正文中我们不想要的结果(牛皮癣)
上述代码我们发现文章最后有一个:
请收藏本站:https://www.bqgam.com。笔趣阁手机版:https://m.bqgam.com | |
『点此报错』『加入书签』 |
如何将其去除呢?如下代码示例:
修改后的代码:
import requests | |
from bs4 import BeautifulSoup | |
from urllib.request import Request, urlopen | |
# 创建一个会话对象 | |
session = requests.session() | |
# 设置请求的 URL | |
host = "https://www.bqgam.com/index/11303/" | |
# 设置请求的页面 | |
page = "https://www.bqgam.com/index/11303/1.html" | |
def requestUrl(url): | |
# 设置请求头 | |
headers = { | |
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.84 Safari/537.36', | |
} | |
# 创建请求对象 | |
req = Request(url, headers=headers) | |
# 打开 URL | |
html = urlopen(req) | |
# 读取 HTML 内容并解码为 utf-8 格式 | |
html = html.read().decode('utf-8') | |
# 返回 HTML 内容 | |
return html | |
# 这里下面开始的部分根据你爬取的实际网页标签进行修改 | |
def getPage(page): | |
# 获取网页的 html 数据 | |
html = requestUrl(page) | |
# 加载 html 文档为 soup 结构 | |
soup = BeautifulSoup(html, "html.parser") | |
# 查找章节列表 <h1 class="wap_none"> | |
h1_elements = soup.find_all('h1', attrs={'class': 'wap_none'}) | |
# 正文 <div class="Readarea ReadAjax_content"> | |
p_elements = soup.find_all('div', attrs={'class': 'Readarea ReadAjax_content'}) | |
# 终端打印章节标题 | |
for h1 in h1_elements: | |
print("本文标题", h1.text) | |
# 终端打印正文内容,删除不需要的文本 | |
for p in p_elements: | |
# 删除正文中不需要的文本,比如 "点此报错" 和 "加入书签" | |
cleaned_text = p.text.replace("请收藏本站:https://www.bqgam.com。笔趣阁手机版:https://m.bqgam.com", "").replace("『点此报错』", "").replace("『加入书签』", "") | |
print("本文正文:", cleaned_text) | |
getPage(page) |
输出:
本文标题 第1章:我是一个无敌倒霉的主角 | |
本文正文: “砰”“砰”“砰”“砰” “……” “砰”“砰——” 这是元旦的清晨,第一住院大楼旁边传来什么东西摔碎的声音,不多不少,正好十八声。 而这在这十八声过后,众人再向地面看去时,发现大楼旁边的地面上七零八碎的碎了十八个花盆。 粉身碎骨的那种碎,一眼就看的出是从高层摔下来的。 而这十八个粉身碎骨的花盆竟然诡异的连成了一道歪歪扭扭的直线,在这直线的尽头站着一个穿着白大褂的青年。 顾眠,男,二十二岁,联华医院的外科实习医生,大家都爱叫他顾医生。 当然,他还有个更加风靡的外号——天煞孤星。 顾眠此人来自孤儿院,身高一米八几,长了张富婆十分乐意包养的脸,本该是祖国未来的花朵,但这花朵愣是差点被他自己那诡异的运气折了。 车祸,爆炸,沉船,食物中毒这些小事他全都经历过,当然还有更过分的。 比如说十八个花盆连续照着头掉下来。 顾眠拍拍白大褂,又抬头看了眼那没能命中自己的头的十八个花盆:“大家散了吧,没什么好看的。” 周围的路人显然是被这十八个粉碎花盆唬住了。 过了许久,一个大爷才梗着脖子开口:“怎么能算了呢 ?这是谋杀吧!” 顾眠叹口气,如果这就算谋杀的话,那自己从出生开始所经历的每一天都是活生生的“荆轲刺秦”。 火车脱轨,二十八辆汽车连环追尾,天然气泄露,瓦斯气爆炸,杀人魔房东,幼儿园午睡掀旁边小女孩的裙子却发现里面有个**…… 这 些他全都经历过。 所以十八个花盆照着自己的头砸下来其实也不算很过分对吧? 顾眠好不容易才安抚好慌乱的路人,却在转角处猝不及防的遭遇了生活的下一次刺杀。 他已经习惯了,因为他深知自己的每一个转角都藏着一个伺机而动的刺客。 那是一个身长五米,高一米半,有巨大的眼睛,长相肖似面包车的刺客——那好像就是面包车。 这方方方正正的座驾从拐角后冲出,长了眼睛一般径直的冲着顾眠加速狂奔而来,没有任何要停下的意思。 它红彤彤的车灯像是怒目圆睁的眼睛,尖锐的喇叭嘶鸣着,好像驾驶座上的司机正用了所有的力气来拍喇叭一样。 来了,车祸刺杀。 看见这怒目圆睁的面包车,顿时街上所有的病人和家属都仓皇着向旁边跑去;甚至有伤了腿的伤患无药自愈,此人一扔拐杖,拿出马拉松冲刺的架势拼了命的就冲着旁边花坛跳去,堪称医学奇迹。 “快跑啊!”此时有人注意到了正在面包车行驶轨迹上的那个医生。 顾眠也想逃跑。 但多年的被刺杀经验告诉他,如果自己提前逃跑的话,这辆失控的车绝对也会在半路上拐个离奇的弯继续冲着自己漂移过来。 人们便眼睁睁的看着那辆失控了的车冲着一个似乎被吓呆了的医生冲过去。 但预想中血肉横飞的局面没没有出现。 只见这医生身手了得,就在那辆车几乎要撞上去的时候,竟然使出了类似于凌波微步的轻功——说得通俗一点就是往后跳。 顾眠这一跳,愣是把即将上演的温香软玉抱满怀变成了擦肩而过。 惊得周围的人都闪了脖子。 车子在面前呼啸而过。 顾眠松一口气,然后又向旁边梗了脖子的人们重复了一遍他这辈子已经重复过无数次的话:“行了行了,没什么好看的,都散了吧。” 这次的人散的倒是快,大家似乎也嗅到了空气中的倒霉味儿,生怕自己一不小心也沾染了霉运,纷纷四散离开。 此时那破面包车已经冲出去十米开外,好不容易才停了下来,从上面滚下来一个胖子,满头大汗,应该是司机。 “不好意思啊小兄弟!”胖子气喘吁吁的跑过来道歉,“ 这破车突然刹不住了。” 显然这胖子自己也受到了不小的惊吓,但还是迅速跑过来观察顾眠有没有受伤。 看见人没有大碍之后,他才松了一口气,转而抬头看向这位差点被自己撞死的医生的脸。 不料这差点死于非命的医生竟然一点都没虚,仍然气定 神闲,仿佛笃定车和他撞上死的会是车一样。 胖子噎了一下。 这怕不是医生,是个偷了白大褂跑出来的神经病吧? 顾眠的视线在这胖子神奇的表情上转了一圈,并没有索要精神损失费的想法,他拍拍白大褂:“如果没事的话我就先走了。” “有事 ,有事。”顾眠刚一转身,就被胖子一把拉住了,“小兄弟你真不打算做个检查之类的?” 顾眠摇头,完全不用。 得到他否定的答案后,胖子又迟疑着开口:“好吧,小兄弟你知不知道神经外科在哪栋楼上,有个妹子打电话说精神外科办公室的洗手盆掉下来了,我是来修洗手盆的。” 虽然刚才差点撞到人,但好歹还没忘记本职工作。 顾眠停下来看他一眼:“正好我带你去吧。” 胖子立刻回到自己的车里掏出工具包来:“您真是我见过的最通情理的受害者了。” 顾眠:“……” 胖子紧跟着顾眠进了第一 住院大楼,来到电梯跟前。 这大胖子看起来一点都不虚,他手头的提包里有个一米半左右的冲击电钻,看起来足足有十斤左右那么沉。 电钻手把上包了一张报纸,大概是为了保持整洁,也不知道这报纸是什么年代的,已经开始泛黄。 顾眠依稀可以看见上面一个诺大的标题—— “某高校一初中班级发生火灾,二十九人遇难。” 此时电梯已经下来,顾眠抬脚上去,胖子也连忙跟了上去。 神经外科在十八楼,顾眠伸手按下了十八层的按钮。 一个医生跟一个胖子好像没什么可以聊的。 二人都不说话,电梯中的气氛顿时诡异起来。 但马上顾眠就发现这气氛并不算什么,因为更诡异的事情在后面。 一个黑色的半透明的面板突然出现在他面前,并不是小说里的系统之类的东西。 因为此时面板上正噼里啪啦的蹦出几行字让人难以理解的字来。 【欢迎来到全球进化游戏,本游戏由地球发起,玩家为全人类】 【经检测,全球百分之九十九的人类不符合宇宙生物标准规格,本游戏旨在通过游戏帮助人类进化】 【地球现已变成大型生存游戏,全球将产生无数副本售票亭,玩家可前往售票亭随机匹配副本,完成副本可提升自身素质等】 【当剩余人类总体素质达标时,本游戏将自动关闭】 【点击进入游戏】 顾眠的脑回路早就被生活荼毒的与正常人两异,此时他兴奋起来,斜眼看了下旁边的胖子,果然胖子面前也有块面板。 但似乎哪里不大一样…… 顾面视力很好,当然是为了防止来自生活的诡异刺杀。 只见胖子的的面板和他大不相同! 在【点击进入游戏】前面还有几行字。 【在副本中玩家死亡不会真实死亡,但将会损失一定个人物品,包括属性点等】 【游戏中疼痛程度将不会减轻,昏迷保护机制仍然存在】 虽然只多了几行字,但内容却大不相同。 “不会真实死亡……” 这是要让全球玩家开心快乐的玩游戏啊。 等等,为什么我没有这几行字? 意思就是别的玩家在副本里死亡都是假死,换自己就是真死了? 生活为了搞死我已经做到如此丧心病狂的地步了吗! 似乎是害怕出什么意外一样,很快,面前的面板上刷新了两行字。 【游戏程序正在启动……】 【载入中……】 |
# 总结
今天我们通过 Python BeautifulSoup 库解析 HTML,
提取了章节标题和正文,并在输出时删除了指定的不需要文本。
tpis:在使用时,请确保了解网页结构以适应可能的变化。如果你要爬取其他笔趣阁或者网站的内容,请根据实际标签等更改源代码,以上源代码仅适用于: www.bqgam.com 这个站点。
最后免责声明:本站一切内容仅供学习交流使用,请勿用于商业用途,否则一切后果用户自负!谢谢。