python爬虫实战二、多页爬取全篇小说并分章节保存本地

多页爬取全篇小说并分章节保存本地

有需要爬取一些文章来满足自己开发的实际需要,以下以爬取经典小说《西游记》为例,共计101回。
在开始之前我们需要导入我们需要的库:
①beautifulsoup4
②requests
③lxml

据实际需要导入自己需要的库,也可以不用以上的库,自己熟悉哪种解析库,便优先选取哪种。
本次爬取的网站为诗词名句网中的西游记小说

总代码如下:

from bs4 import BeautifulSoup      #导入需要的库
import requests
import time
from lxml import etree


def get_word(url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36'}  #获得响应头
    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.text, 'html.parser')  # BeautifulSoup解析网页
    html = etree.HTML(response.text)  # XPath解析
    title = soup.select(
        'body > div.layui-container > div.layui-row.layui-col-space10 > div.layui-col-md8.layui-col-sm7 > div.www-main-container.www-shadow-card > h1')
    # 设置小说文件储存位置,如果不存在在该文件夹则生成一个该文件(显然我们是来没有创建的)
    # 文件夹的名称为,每回章节的名称
    src = 'C:\\Users\LeeChoy\\Desktop\\APPs\\经典文学\\西游记素材\content\\' + title[0].get_text() + '.txt'
    # 打开文件夹并且,编码设置成utf-8
    f = open(src, 'w+', encoding='utf-8')
    # print(title[0].get_text())
    f.write(title[0].get_text() + '\n')  # title[0].text   写入章节标题
    words = soup.select(
        'body > div.layui-container > div.layui-row.layui-col-space10 >'
        ' div.layui-col-md8.layui-col-sm7 > div.www-main-container.www-shadow-card > div > p')
    for word in words:
        print(word.text)
        f.write("  " + word.text +'\n')     #写入章节内容
    f.close()   //关闭文件


if __name__ == '__main__':     #主函数开始
    for i in range(1, 101):         #利用最笨的方法构建100个网址
        url = 'http://www.shicimingju.com/book/xiyouji/'
        url = url + str(i) + '.html'
        get_word(url)
        time.sleep(1)        #延迟响应1秒防止浏览过快被封ip

爬取结果

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值