分析:小说网站和之前的图片网站差不多,本来想用for循环生成数字后拼接url地址进行访问,后来发现按照顺序生成的url会掺杂着别的小说的章节
解决:从小说第一章网页开始爬取,并判断是否有下一章的链接,一直到获取不到数据为止
话不多说,上源码
#coding:utf-8
import requests
import pdb
from bs4 import BeautifulSoup
#封装一个函数
def urlbook(url):
html = requests.get(url) #获取网页数据
html.encoding='gbk' #设置获取到的网页格式
html = html.text #提取网页中文本
text = BeautifulSoup(html,'lxml') #整合HTML
#print(text)
count = text.find_all('div', class_='mainContenr') #提取网页中需要的目标文字
if count: #判断是否提取到文字,如果结果为空则不再执行 注:count值可能不准确
count = count[0].get_text() #获取需要的文字(可去除不必要的标签)
title = text.find('strong').string #获取章节名称
title = title.replace('章节目录','') #去除不必要的文字
count = count.replace('style5();','') #去除不必要的文字
file = r'D:\终极全才.txt' #设置存储文件目录
with open(file, 'a+',encoding='utf-8') as f: #将获取到的标题和文字追加存储到文件中
f.write(title+'\n'+count)
data = text.find('a',class_='next') #获取网页中有没有下一页的按钮
if data != 'None': #判断有没有下一章节,如果有就继续执行(递归),注:None值可能不准确,
next = text.find('a', class_='next').get('href')
urlbook(next)
urlbook('http://www.quanshuwang.com/book/169/169693/49554090.html')