python爬取小说(有点递归的意思)

分析:小说网站和之前的图片网站差不多,本来想用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')

结果展示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值