之前在Python爬虫实战(2)中我们曾爬取过网络小说,本篇博客的爬取解析过程和之前几乎完全一样,不同的是数据存储方式,之前是存储到文件中(csv,txt,json,excel等),这次我们将提取的小说存储到MongoDB数据库中。下面是首页链接:
http://www.xbiquge.la/xiaoshuodaquan/
首先打开上面的网址,我们会发现是小说列表,选择其中一部小说,打开会是章节列表,打开某一章后才是文本。所以,我们要首先获取小说列表,然后打开某一部小说后,再获取章节列表,最后在爬取对应的内容。依旧是四部曲:
首先搭建起程序主体框架:
import os
import re
import time
import requests
from requests import RequestException
import pymongo
def get_page(url):
pass
def get_list(page):
pass
def get_chapter(novel_url):
pass
def get_content(chapter, name):
pass
if __name__ == '__main__':
#连接MongoDB
client = pymongo.MongoClient('mongodb://localhost:27017')
#指定数据库
db = client.novel
#指定集合
novel_col = db.novels #存储小说名和章节名
chapter_col = db.chapters #存储章节名和章节内容
# 首页url
url = 'http://www.xbiquge.la/xiaoshuodaquan/'
# 发送请求,获取响应
page = get_page(url)
# 获取小说列表 解析响应
novel_list = get_list(page)
print(novel_list)
for item in novel_list:
novel_chapter = get_chapter(item[0]) #得到章节列表
print(novel_chapter)
# 按小说章节 分别保存到文本文件
for chapter in novel_chapter:
get_content(chapter, item[1])