爬取小说的简易<1>爬虫
python代码源码大全 " />

Python是一种广泛应用于爬虫领域的编程语言,它具有简单易学、代码简洁、生态丰富等特点。本文将介绍一种简单的Python爬虫,用来爬取小说并保存到本地。

首先,我们需要确定爬虫的目标网站。这里以笔趣阁为例,笔趣阁是一个提供大量小说在线阅读的网站,同时也提供了小说下载功能。

接下来,我们需要安装一些必要的Python库。其中,requests库用来发送HTTP请求、BeautifulSoup库用来解析网页HTML代码、os库用来创建文件夹和文件、re库用来匹配正则表达式。在命令行中输入以下命令进行安装:

```

pip install requests

pip install BeautifulSoup4

```

接下来,我们就可以开始编写代码了。

首先,定义一个函数用来获取小说章节目录的链接列表:

```python

import requests

from bs4 import BeautifulSoup

def get_directory(url):

response = requests.get(url)

soup = BeautifulSoup(response.content, 'html.parser')

directory = soup.find_all('div', {'id': 'list'})[0]

links = directory.find_all('a')

return [link['href'] for link in links]

```

此函数中,我们首先发送HTTP请求并使用BeautifulSoup库解析响应内容。我们发现小说的章节目录位于一个id为“list”的div中,因此我们可以使用soup.find_all方法来查找这个div。在这个div中,每个章节链接都包含在一个a标签中,因此我们使用find_all方法来找到所有的a标签,然后提取出每个标签的href属性,将它们存储到一个列表中并返回。

接下来,定义一个函数用来获取每一章节的正文内容:

```python

def get_chapter(url):

response = requests.get(url)

soup = BeautifulSoup(response.content, 'html.parser')

title = soup.find_all('div', {'class': 'bookname'})[0].h1.text

content = soup.find_all('div', {'id': 'content'})[0].text

return title, content

```

该函数同样发送HTTP请求并使用BeautifulSoup库解析响应内容。章节标题位于一个class为“bookname”的div中,我们使用title方法获取它。章节正文位于一个id为“content”的div中,我们使用text方法获取它。

现在,我们可以定义一个函数用来保存小说到本地:

```python

import os

def save_novel(novel_name, directory_url):

links = get_directory(directory_url)

novel_path = os.path.join(os.getcwd(), novel_name)

if not os.path.exists(novel_path):

os.mkdir(novel_path)

for link in links:

title, content = get_chapter(link)

chapter_path = os.path.join(novel_path, '{}.txt'.format(title))

with open(chapter_path, 'w', encoding='utf-8') as f:

f.write(content)

```

在该函数中,我们首先调用get_directory函数获取小说章节链接列表。接下来,我们使用os.getcwd方法获取当前工作目录,并把小说所在的文件夹路径定义为该目录下的一个新文件夹,如果该文件夹不存在则调用os.mkdir方法创建它。

接下来,我们遍历章节链接列表,分别调用get_chapter获取每一个章节的标题和正文,并使用os.path.join方法拼接出该章节的文件路径。最后,我们打开该文件并写入正文内容。

最后,我们调用save_novel函数来下载并保存小说:

```python

save_novel('斗破苍穹', 'https://www.biquge.com.cn/book/30/')

```

在调用该函数之前,我们需要确定小说的标题和目录链接。在本例中,小说标题为“斗破苍穹”,目录链接为“https://www.biquge.com.cn/book/30/”。

在爬虫运行期间,我们会看到当前正下载哪一个章节,并在本地创建一个与小说名相同的文件夹,该文件夹下包含所有章节的文本文件。

完整代码如下:

```python

import requests

from bs4 import BeautifulSoup

import os

def get_directory(url):

response = requests.get(url)

soup = BeautifulSoup(response.content, 'html.parser')

directory = soup.find_all('div', {'id': 'list'})[0]

links = directory.find_all('a')

return [link['href'] for link in links]

def get_chapter(url):

response = requests.get(url)

soup = BeautifulSoup(response.content, 'html.parser')

title = soup.find_all('div', {'class': 'bookname'})[0].h1.text

content = soup.find_all('div', {'id': 'content'})[0].text

return title, content

def save_novel(novel_name, directory_url):

links = get_directory(directory_url)

novel_path = os.path.join(os.getcwd(), novel_name)

if not os.path.exists(novel_path):

os.mkdir(novel_path)

for link in links:

title, content = get_chapter(link)

print('Downloading:', title.strip())

chapter_path = os.path.join(novel_path, '{}.txt'.format(title))

with open(chapter_path, 'w', encoding='utf-8') as f:

f.write(content)

save_novel('斗破苍穹', 'https://www.biquge.com.cn/book/30/')

```

总之,我们使用Python编写了一个简单的爬虫程序,用来下载小说并保存到本地。虽然这个程序并不是完美的,但它是一个不错的入门级别的爬虫程序,对于初学者而言是一个很好的练手项目。

壹涵网络我们是一家专注于网站建设、企业营销、网站关键词排名、AI内容生成、新媒体营销和短视频营销等业务的公司。我们拥有一支优秀的团队,专门致力于为客户提供优质的服务。

我们致力于为客户提供一站式的互联网营销服务,帮助客户在激烈的市场竞争中获得更大的优势和发展机会!

点赞(73) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部