python爬取多本小说python爬取笔趣阁小说
更新时间:2023-12-22Python爬取多本小说
对于需要爬取多本小说的需求,我们可以使用如下的代码来实现:
# 导入所需模块 import requests from bs4 import BeautifulSoup import os # 定义一个函数用于创建文件夹 def mkdir(path): folder = os.path.exists(path) if not folder: os.makedirs(path) # 定义一个函数用于下载小说 def download_novel(novel_url, folder_path): # 获取小说名和章节列表 response = requests.get(novel_url) response.encoding = 'utf-8' soup = BeautifulSoup(response.text, 'html.parser') novel_name = soup.find('h1').text.strip() chapter_list = soup.find_all('a', href=True) # 创建小说文件夹 folder_path = os.path.join(folder_path, novel_name) mkdir(folder_path) # 下载小说 for chapter in chapter_list: chapter_url = chapter['href'] chapter_title = chapter.text.strip() if '笔趣阁' in chapter_title: continue chapter_response = requests.get(chapter_url) chapter_response.encoding = 'utf-8' chapter_soup = BeautifulSoup(chapter_response.text, 'html.parser') content = chapter_soup.find('div', id='content').text.strip() with open(os.path.join(folder_path, f'{chapter_title}.txt'), 'w', encoding='utf-8') as f: f.write(content)
上面的代码包含两个函数,一个用于创建文件夹,一个用于下载小说。首先,我们需要从笔趣阁获取小说的章节列表以及小说名,然后创建以小说名为名字的文件夹,接着遍历所有章节的链接,从链接中获取章节的标题和内容,并保存在以章节标题为文件名的txt文件中。
Python爬取笔趣阁小说
对于只需要爬取笔趣阁小说的需求,我们可以使用如下代码来实现:
# 导入所需模块 import requests from bs4 import BeautifulSoup import os # 定义一个函数用于创建文件夹 def mkdir(path): folder = os.path.exists(path) if not folder: os.makedirs(path) # 定义一个函数用于下载小说 def download_novel(novel_url, folder_path): # 获取小说名和章节列表 response = requests.get(novel_url) response.encoding = 'utf-8' soup = BeautifulSoup(response.text, 'html.parser') novel_name = soup.find('h1').text.strip() chapter_list = soup.find_all('a', href=True) # 创建小说文件夹 folder_path = os.path.join(folder_path, novel_name) mkdir(folder_path) # 下载小说 for chapter in chapter_list: chapter_url = chapter['href'] chapter_title = chapter.text.strip() chapter_response = requests.get(chapter_url) chapter_response.encoding = 'utf-8' chapter_soup = BeautifulSoup(chapter_response.text, 'html.parser') content = chapter_soup.find('div', id='content').text.strip() with open(os.path.join(folder_path, f'{chapter_title}.txt'), 'w', encoding='utf-8') as f: f.write(content)
上面的代码与上一个代码基本相同,唯一的不同在于没有对章节列表做过滤,因此会下载所有章节,包括笔趣阁的广告章节。另外,需要注意的是,为避免被封IP,我们需要添加延时和headers。
总结
通过上面两个代码示例,我们可以实现Python爬取多本小说和Python爬取笔趣阁小说的需求。在代码实现过程中,需要注意以下几点:
1.避免被封IP,需要添加延时和headers
2.小说名和章节标题中有可能含有不合法的字符,需要特殊处理
3.部分章节是广告章节,需要做过滤处理
4.最好使用BeautifulSoup这样的库来解析HTML,以达到更好的效果