02笔趣阁小说爬取--爬取单章内容--内容优化

通过之前的努力,已经成功将章节内容爬取到本地。

打开爬取的txt文件,发现如下问题

1.每章前都有“ 一秒记住【笔趣阁 www.52bqg.com】,精彩小说无弹窗免费阅读!”的广告文字;

2.段首有多余 的空格;

3.有空行;

现在要将下载的内容进行优化,使其显示更加美观。

这里使用replace()方法去掉多余部分。

查看网页源代码

<br />
&nbsp;&nbsp;&nbsp;&nbsp;能量卡刚一插入卡槽,房间便恢复光明。仪表上显示出数字一百。没想到能量就用完了,看来今天的任务又要多加一张了。回到桌前的陈暮迅速投入到工作之中,他的所有生活来源都依靠这种最纸级的卡片。从三年前他学会了制作这种能量卡之后,每天二十五张的工作量他从未有一天中断过。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;陈暮的房间很小,只有不到四十平米,里面摆放着一张半旧工作桌。除了工作桌上还比较干净以外,房间其他地方到处堆放着堆积如山的杂物。这些杂物也是五花八门,成堆的旧书,散放的各种原料。<br />
<br />

发现段首空格为4个“&nbsp;”,空行为一个<br />,以这两个为关键词使用replace()进行内容优化,

import requests
from bs4 import BeautifulSoup

target = 'https://www.52bqg.com/book_12525/6122965.html'  # 内容页地址
req = requests.get(url = target)
req.encoding = req.apparent_encoding  # 编码转换

# 使用beautifulsoup 筛选出id=content的div标签
bf = BeautifulSoup(req.text,"html.parser")
content = bf.find_all('div',id='content')
content = content[0].text

# 内容优化
content = content.replace('&nbsp;', '')
content = content.replace('<br />','')
print(content)

# 调试阶段,先注释掉

# 保存到本地
# file = open('卡徒.txt','a', encoding='utf-8')  # 以追加模式,在当前目录下创建并写入,采用utf-8编码
# file.write(content)
# file.close()

运行代码,发现根本没起作用!!!????

查看参考文章,空格是“\xa0”,但是空行用什么表示没有说。百度了下,各种说法都有,尝试了好几种方法都没有成功。

突然间灵光一闪,不知怎么就想到了split() ,试着运行一下,就像开了天眼,所有隐藏的东西统统现了原形!!

import requests
from bs4 import BeautifulSoup

target = 'https://www.52bqg.com/book_12525/6122965.html'  # 内容页地址
req = requests.get(url = target)
req.encoding = req.apparent_encoding  # 编码转换

# 使用beautifulsoup 筛选出id=content的div标签
bf = BeautifulSoup(req.text,"html.parser")
content = bf.find_all('div',id='content')
content = content[0].text

content = content.split('。')  # 开天眼

print(content)

输出结果如下

将输出结果与之前保存到本地的txt文件进行对比,可以发现

\r\n           一秒记住【笔趣阁 www.52bqg.com】,精彩小说无弹窗免费阅读!\r\n           \xa0\xa0\xa0\xa0 表示广告文字;

\r\n 表示空行;

\xa0\xa0\xa0\xa0表示段首的四个空格;

重新编写代码

import requests
from bs4 import BeautifulSoup

target = 'https://www.52bqg.com/book_12525/6122965.html'  # 内容页地址
req = requests.get(url = target)
req.encoding = req.apparent_encoding  # 编码转换

# 使用beautifulsoup 筛选出id=content的div标签
bf = BeautifulSoup(req.text,"html.parser")
content = bf.find_all('div',id='content')
content = content[0].text

# 内容优化
content = content.replace('\r\n           一秒记住【笔趣阁 www.52bqg.com】,精彩小说无弹窗免费阅读!\r\n           \xa0\xa0', '')
content = content.replace('\r\n\xa0\xa0','')  # 去空行和段首空格,保留\n实现换行,保留2个空格使首行缩进2空格

print(content)

输出结果如下,问题完美解决!!!

最终的代码如下,因为使用的是追加模式,在运行代码前,记得把之前保存的txt文件删除!!

import requests
from bs4 import BeautifulSoup

target = 'https://www.52bqg.com/book_12525/6122965.html'  # 内容页地址
req = requests.get(url = target)
req.encoding = req.apparent_encoding  # 编码转换

# 使用beautifulsoup 筛选出id=content的div标签
bf = BeautifulSoup(req.text,"html.parser")
content = bf.find_all('div',id='content')
content = content[0].text

# 内容优化
content = content.replace('\r\n           一秒记住【笔趣阁 www.52bqg.com】,精彩小说无弹窗免费阅读!\r\n           \xa0\xa0', '')
content = content.replace('\r\n\xa0\xa0','')  # 去空行和段首空格,保留\n实现换行,保留2个空格使首行缩进2空格

# 保存到本地
file = open('卡徒.txt','a', encoding='utf-8')  # 以追加模式,在当前目录下创建并写入,采用utf-8编码
file.write(content)
file.close()


关键点:使用split()开天眼,找到需要优化的隐藏符号。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值