利用Python下载网络小说并保存到本地文件!

利用Python下载网络小说并保存到本地文件!

原创:

 

最近在都应中刷到一本B站的漫画《我家娘子竟然是女帝》,它是根据小说《迎娶女帝之后》改编的,它目前只更新到68集,这本小说虽然不是我喜欢的类型,但是没啥事就看了一下,但是后面章节怎么找都找不到下载,于是用python把整本说下载下来了。

 

安装python

官方下载地址:https://www.python.org/downloads/

006fRELkly4h77395emh7j31hb0i8dm3

 

006fRELkly4h77397jz7qj31h50fz413

windows版本的安装比较简单,直接下载后,安装即可。

 

网站分析

获取小说目录

 

小说地址:https://www.81zw.com/book/60503/

006fRELkly4h773991mvoj30q20j4n0i

就以第一张为例,点开链接,检查网页,找到这本小说所有章节的链接和名称。

 

006fRELkly4h773a1ne2mj314p0gt76p

章节目录,通过一个 id 为 list 的 div 包裹,使用 dl > dd 制作列表

def get_urls():
    url = bookurl
    response = requests.get(url, headers=headers)
    response.encoding = 'utf-8'
    html = etree.HTML(response.text)

    # 所有章节的url列表
    url_list = [weburl + x for x in html.xpath('//div[@id="list"]/dl/dd/a/@href')]
    return url_list

以上代码,通过 etree 获取 HTML 内容,然后通过 xpath 查询 id 为 list 中每个章节的链接

获取小说内容

 

006fRELkly1h773b67f32j311y0eggz3

标题内容在 class 为 bookname 的div 下面的 H1 标签中。
小说内容在 id 为 content 的 div 中。

def get_text(url):
    rep = requests.get(url, headers=headers)
    rep.encoding = 'utf-8'
    dom = etree.HTML(rep.text)
    name = dom.xpath('//div[@class="bookname"]/h1/text()')[0]
    text = dom.xpath('//div[@id="content"]/text()')
    with open(path + bookname + '.txt', 'a', encoding='utf-8') as f:
        f.write(name)
        for con in text:
           f.write(con)
    
    print(f'{name}  ===> 下载完成')

使用 etree 和 xpath 获取小说内容,然后通过 for 循环写入文件。

完整代码

import requests
from lxml import etree
import time
import random

path = r"D:/Download/books/"
bookname = "迎娶女帝之后"
weburl = "https://www.81zw.com/"
bookurl = "https://www.81zw.com/book/60503/"
headers = {
    "Referer": bookurl,
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1"
}

def get_urls():
    url = bookurl
    response = requests.get(url, headers=headers)
    response.encoding = 'utf-8'
    html = etree.HTML(response.text)

    # 所有章节的url列表
    url_list = [weburl + x for x in html.xpath('//div[@id="list"]/dl/dd/a/@href')]
    return url_list
  
def get_text(url):
    rep = requests.get(url, headers=headers)
    rep.encoding = 'utf-8'
    dom = etree.HTML(rep.text)
    name = dom.xpath('//div[@class="bookname"]/h1/text()')[0]
    text = dom.xpath('//div[@id="content"]/text()')
    with open(path + bookname + '.txt', 'a', encoding='utf-8') as f:
        f.write(name)
        for con in text:
           f.write(con)
    
    print(f'{name}  ===> 下载完成')

def main():
    urls = get_urls()

    for url in urls:
        get_text(url)
        time.sleep(random.randint(1, 3))

if __name__ == '__main__':
    main()

path :存放小说文件的路径
bookname:小说文件名称
weburl:小说网站域名
bookurl:小说URL

脚本保存为 .py 后缀的文件,可双击直接运行,也可以在命令窗口或者 idea 中运行。

006fRELkly4h7739c2qpqj317v0fymyo

 

006fRELkly4h7739cu6ekj30l2051t8q

出现上图输出内容,说明脚本是有效果的。

 

学习资料见知识星球。

以上就是今天要分享的技巧,你学会了吗?若有什么问题,欢迎在下方留言。

快来试试吧,小琥 my21ke007。获取 1000个免费 Excel模板福利​​​​!

更多技巧, www.excelbook.cn

欢迎 加入 零售创新 知识星球,知识星球主要以数据分析、报告分享、数据工具讨论为主;

电商数据分析360°实战攻略!

你将获得:

1、价值上万元的专业的PPT报告模板。

2、专业案例分析和解读笔记。

3、实用的Excel、Word、PPT技巧。

4、VIP讨论群,共享资源。

5、优惠的会员商品。

6、一次付费只需129元,即可下载本站文章涉及的文件和软件。

文章版权声明 1、本网站名称:Excelbook
2、本站永久网址:http://www.excelbook.cn
3、本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长王小琥进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报。
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。

THE END
分享
二维码
< <上一篇
下一篇>>