c语言编程笔录

首页 >   > 笔记大全

笔记大全

python爬取多本小说python爬取笔趣阁小说

更新时间:2023-12-22

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()
        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,以达到更好的效果