Python爬虫代码分享:获取小说的内容
Python爬虫代码是一种自动化程序,可以通过向网站发送HTTP请求来获取内容,并对其进行解析、提取和存储。本文中,分享了一份从小说网站获取小说内容的Python爬虫代码。该代码可以自动批量下载小说,将每章节的内容保存到txt文档中。
# - - - - 小说爬虫程序 - - - -
# 从biquge获取小说内容,将内容写入txt文档中。
# 打开biquge主页,将对应小说的网址复制到Python中即可
import re
import os
import requests
# biquge小说主页的网址
novel_url = "https://www.biqudu.net/13_13453/"
# 读取页面并解码为utf-8格式
novel_page = requests.get(novel_url).content.decode("UTF-8")
# 取出biquge网址
url_array = novel_url.split('/')
url_array.remove(url_array[3])
base_url = url_array[0] + "//" + url_array[2] + "/"
# 获取小说标题
title_regex = re.compile(r'<h1>(.+)</h1>')
title = title_regex.findall(novel_page)[0].center(23, '=')
print(title)
# 文件名称为小说的标题加上.txt后缀
file_name = title_regex.findall(novel_page)[0] + ".txt"
# 获取小说目录
chapter_regex = re.compile(r'<a href="/(.+\.html)">(.+)</a>')
chapter_raw = chapter_regex.findall(novel_page)
chapter_list = [(i[1], base_url + i[0]) for i in chapter_raw]
print("目录已加载完毕!")
# 获取每一个章节的内容
content_regex = re.compile(r'<div id="content">(.+)<script>chaptererror', re.S)
newline_regex = re.compile(r"<br/><br/>\u3000\u3000")
# 判断路径下是否存在对应的文件
is_exist = os.path.isfile(file_name)
if is_exist:
os.remove(file_name) #移除存在的文件,防止后续字符写到前面的文件
with open(file_name, "a") as f:
for chapter in chapter_list:
print("开始下载--->", chapter[0])
print("章节网址--->,", chapter[1])
chapter_page = requests.get(chapter[1]).content.decode("UTF-8")
chapter_content = content_regex.findall(chapter_page)[0]
chapter_content = newline_regex.sub('', chapter_content)
chapter_content = chapter_content.replace("<script>readx();</script>", "")
chapter_content = chapter_content.replace("\r\n", "")
chapter_content = chapter_content.replace("。”", "”")
chapter_content = chapter_content.lstrip()
f.write(chapter[0])
f.write("\n\n")
nrlArray = chapter_content.split('。')
for sentence in nrlArray:
f.write(" " + sentence)
f.write("\n\n")
f.write("\n\n")
print("下载完毕!")
该代码主要实现了以下功能:
-
获取小说的标题和章节目录 通过正则表达式编写匹配规则,可以获取小说的标题和章节目录。对于不同的小说网站,需要根据网站源代码中的标签和结构进行调整,以保证能够正确地提取信息。
-
下载每个章节的内容并写入文件 使用requests库向小说网站发送HTTP请求,获取每个章节的内容,并通过正则表达式进行解析和提取。最后将每个章节的标题和内容写入txt文档中。在写入之前,需要先进行一些文本清洗工作,例如去除多余的HTML标签、空格、回车等。
此外,该代码还具有以下特点:
- 支持断点续传:在下载过程中,如果出现意外中断,下次执行代码时会从上一次中断的位置继续下载。
- 可扩展性强:只需根据不同的小说网站进行适当的修改,就能够批量下载其他小说。
总之,Python爬虫代码是一种非常强大的工具,可以帮助我们自动化地获取和处理数据。但需要注意的是,爬取网站内容可能涉及到版权等法律问题,应该遵守相关规定并谨慎使用