爬取小说

简介: 爬取小说
import urllib.request
import random
from bs4 import BeautifulSoup
import time
def request_html(url):
    headers={
   'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36'}
    request = urllib.request.Request(url, headers=headers)
    return request

def parse_html(html, f):
    # 生成soup对象
    soup = BeautifulSoup(html, 'lxml')
    # 查找所有的章节链接和标题内容
    list_name = soup.select('.book-mulu > ul > li > a')
    # 遍历每一个列表中的tag对象,获取链接个目录
    for item in list_name:
        # 获取链接
        #item: <a href="/book/liangjinyanyi/1.html">自序</a>
        #拼接目录链接,此处item类型为<class 'bs4.element.Tag'>,使用下面方法可以值获取href属性值
        href = 'http://www.shicimingju.com' + item['href']
        # 获取标题
        title = item.text
        print('正在下载:-**--%s--**-......' % title)
        # 获取章节内容函数
        text = get_text(href)
        # 写入文件
        f.write(title + '\n' + text)
        print('结束下载:-**--%s--**-' % title)
        time.sleep(random.uniform(0,1))

# 提取章节内容
def get_text(href):
    #创建请求对象
    request = request_html(href)
    content = urllib.request.urlopen(request).read().decode('utf8')
    soup = BeautifulSoup(content, 'lxml')
    # 查找包含内容的tag--div
    artist = soup.find('div', class_='chapter_content')
    #获取tag标签中的文本内容
    return artist.text

def run():
    # 打开文件
    f = open('两晋演义.txt', 'w', encoding='utf8')
    url = 'http://www.shicimingju.com/book/liangjinyanyi.html'
    # 构建请求对象
    request = request_html(url)
    # 发送请求,得到响应,转换为HTML对象
    html = urllib.request.urlopen(request).read().decode('utf8')
    # 解析内容
    parse_html(html,f)
    #关闭文件
    f.close()

if __name__ == '__main__':
    run()
目录
相关文章
|
设计模式 编解码 前端开发
打造卓越 QML 层级设计:从入门到精通(三)
打造卓越 QML 层级设计:从入门到精通(三)
2006 0
|
网络协议 数据安全/隐私保护 网络架构
【个人笔记】计算机网络五层结构理解
【个人笔记】计算机网络五层结构理解
|
数据采集 机器学习/深度学习 人工智能
Bert-vits2-2.3-Final,Bert-vits2最终版一键整合包(复刻生化危机艾达王)
近日,Bert-vits2发布了最新的版本2.3-final,意为最终版,修复了一些已知的bug,添加基于 WavLM 的 Discriminator(来源于 StyleTTS2),令人意外的是,因情感控制效果不佳,去除了 CLAP情感模型,换成了相对简单的 BERT 融合语义方式。
Bert-vits2-2.3-Final,Bert-vits2最终版一键整合包(复刻生化危机艾达王)
|
人工智能 编解码 算法
八大科技创新应用——中央广播电视总台2025蛇年春晚打造视听盛宴
八大科技创新应用——中央广播电视总台2025蛇年春晚打造视听盛宴
|
人工智能 云计算
阿里云AI技术亮相春晚!独家揭秘背后的故事!
阿里云AI技术亮相春晚!独家揭秘背后的故事!
|
存储 人工智能 边缘计算
AI时代下, 边缘云上的技术演进与场景创新
本文介绍了AI时代下边缘云的技术演进与场景创新。主要内容分为三部分:一是边缘云算力形态的多元化演进,强调阿里云边缘节点服务(ENS)在全球600多个节点的部署,提供低时延、本地化和小型化的价值;二是边缘AI推理的创新发展与实践,涵盖低时延、资源广分布、本地化及弹性需求等优势;三是云游戏在边缘承载的技术演进,探讨云游戏对边缘计算的依赖及其技术方案,如多开技术、云存储和网络架构优化,以提升用户体验并降低成本。文章展示了边缘云在未来智能化、实时化解决方案中的重要性。
689 3
|
存储 人工智能 弹性计算
探索艺术的无限可能 —— AI绘画,让创意触手可及
现在就来体验AI绘画方案,让我们一起唤醒沉睡的艺术灵魂,释放你的创意小宇宙,让你的涂鸦和人像照,从此不再平凡!
|
人工智能 NoSQL 程序员
程序员常用的工具软件推荐(提高工作效率和代码质量)
程序员常用的工具软件推荐(提高工作效率和代码质量)
346 0
|
人工智能 弹性计算 API
通义万相AI绘画创作体验评测
从使用者的角度解读通义万相AI绘画创作方案的优与劣
11973 12
|
数据可视化 关系型数据库 MySQL
Apache Superset 1.2.0教程 (三)—— 图表功能详解
通过之前章节的学习,我们已经成功地安装了superset,并且连接mysql数据库,可视化了王者英雄的数据。使用的是最简单Table类型的图表,但是superset还支持非常多的图表类型。 本文我们将对各种图表类型进行逐一的演示,文章较长。
1500 0
Apache Superset 1.2.0教程 (三)—— 图表功能详解