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内容生成、新媒体营销和短视频营销等业务的公司。我们拥有一支优秀的团队,专门致力于为客户提供优质的服务。
我们致力于为客户提供一站式的互联网营销服务,帮助客户在激烈的市场竞争中获得更大的优势和发展机会!
发表评论 取消回复