通过之前的努力,已经成功将章节内容爬取到本地。
打开爬取的txt文件,发现如下问题
1.每章前都有“ 一秒记住【笔趣阁 www.52bqg.com】,精彩小说无弹窗免费阅读!”的广告文字;
2.段首有多余 的空格;
3.有空行;
现在要将下载的内容进行优化,使其显示更加美观。
这里使用replace()方法去掉多余部分。
查看网页源代码
<br />
能量卡刚一插入卡槽,房间便恢复光明。仪表上显示出数字一百。没想到能量就用完了,看来今天的任务又要多加一张了。回到桌前的陈暮迅速投入到工作之中,他的所有生活来源都依靠这种最纸级的卡片。从三年前他学会了制作这种能量卡之后,每天二十五张的工作量他从未有一天中断过。<br />
<br />
陈暮的房间很小,只有不到四十平米,里面摆放着一张半旧工作桌。除了工作桌上还比较干净以外,房间其他地方到处堆放着堆积如山的杂物。这些杂物也是五花八门,成堆的旧书,散放的各种原料。<br />
<br />
发现段首空格为4个“ ”,空行为一个<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(' ', '')
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()开天眼,找到需要优化的隐藏符号。