专栏首页JAVAandPython君用Python爬虫下载整本小说

用Python爬虫下载整本小说

1

/ 写在前面的话 /

如今网络上很多小说网站都有免费的小说阅读,但是它不提供下载全本的服务,目的也是为了获得更多的流量,资源君就不服了,今天刚好看到一个小说网站,就想弄本小说来看看,于是拿起电脑,噼里啪啦写了一个下载小说的Python代码,下面我来带大家读一读代码(具体的代码讲解我已经写在注释里了)!

2

/ 用爬虫来下载小说 /

1.首先第一步,导入两个我们需要的包

# 用于获取网页的html
from urllib import request
# 用于解析html
from bs4 import BeautifulSoup

2. 我们来分析一下,我们要抓取的小说页面

(广告还挺显眼的)

我们看下这个界面然后再来看看html源码

我们会发现,我框住的地方正是我们所需要的地方,但是注意上面的最新章节和我们的正式的小说目录也就是下面的地方,他们都处于<div class='box1'>中,待会大家可以看看我是怎么处理的。

然后再来看看小说阅读的界面:

这个界面就很简单了,我们来看看HTML源码:

很容易看到<h1>标签中的正是每一章的标题,<p>标签中的也就是正文

OK,经过我们初步分析,我们可以开始写代码了!

3.首先我们写出获取网页html源码的一个方法:

# 得到网页的html
def getHtml(url):
    url = url
    res = request.urlopen(url)
    res = res.read().decode()
    # print(res)
    return res

这个方法传入一个url,会返回一个html源码

4.然后我们再来写一下,获取整本小说所有章节的链接的方法:

# 解析小说章节页面,获取所有章节的子链接def jsoupUrl(html):
    # 获取soup对象
    url_xiaoshuo = BeautifulSoup(html)
    # 因为我们要拿取class为box1中的div
    class_dict = {'class': 'box1'}
    url_xiaoshuo = url_xiaoshuo.find_all('div', attrs=class_dict)
    # 因为分析html中的代码可以发现div的class为box1的有两个,通过上面的代码返回的是一个list格式的结果,所以下面的索引应该是1
    # 我们要获取li中的值,所以find_all,这个方法返回的是一个list集合
    url_xiaoshuo = url_xiaoshuo[1].find_all('li')
    # print(url_xiaoshuo)
    # 创建一个集合,用于存放每个章节的链接
    url_xs = []
    for item in url_xiaoshuo:
        # 获取每个元素中的href值
        url = item.a['href']
        # 将值传入url_xs集合中
        url_xs.append(url)
    return url_xs

具体的解释,我已经写在注释里了,不懂的可以在公众号后台留言

5.我们获取到每个章节的链接之后,我们就需要把每一章节的内容给弄下来并且把它写入到txt文本而且每个文本的标题为章节的标题

# 解析小说每个章节的的主要内容
def jsoupXiaoshuo(list):
    for item in list:
        html = getHtml(item)
        html = BeautifulSoup(html)
        # 获取小说标题
        title = html.h1.get_text()
        xiaoshuo = html.find_all('p')

        for item in xiaoshuo:
            str = item.get_text()
            # open中的第二个参数是让每一次的字符串接连到上一个字符串,千万不能是w
            with open(title + '.txt', 'a') as f:
                f.write(str+'\n')

6.最后我们再main方法中运行这几个方法即可:

if __name__ == '__main__':
    html = getHtml("http://www.136book.com/dadaozhaotian/")

    url_xs = jsoupUrl(html)

    jsoupXiaoshuo(url_xs)

运行出来的结果:

大功告成!

本文分享自微信公众号 - JAVAandPython君(JAVAandPythonJun),作者:JAP君

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-02-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python爬虫|你真的会写爬虫吗?

    咱们直接进入今天的主题---你真的会写爬虫吗?为啥标题是这样,因为我们日常写小爬虫都是一个py文件加上几个请求,但是如果你去写一个正式的项目时,...

    Python进击者
  • Django实战小型图书人物信息网页(MVT的综合运用)

    本文主要总结 Django 系列前面所学的知识,将前面所学的知识通过一个小案例结合起来,让大家对于 MVT 模式更加的熟练。

    Python进击者
  • 小白学Django第六天| 一文快速搞懂模板的使用

    今天来教大家如何使用MVT中的T---模板,很多人认为模板仅仅就是一个HTML,其实这种观点是错误的,在模板templates里有很多的知识点需要我们学习,当然...

    Python进击者
  • 完善我们的新闻爬虫【1】:实现一个更好的网络请求函数,

    实现了一个简单的再也不能简单的新闻爬虫后,这个项目有很多漏洞,以及需要解决的问题。现在我们就来去除这些槽点来完善我们的新闻爬虫。这是第一章,之后会持续来完善好我...

    一墨编程学习
  • 优美库图片小程序 Version1.0

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    xbhog
  • python对url格式解析的方法

    本文实例讲述了python对url格式解析的方法。分享给大家供大家参考。具体分析如下:

    py3study
  • 用python抓取某腾视频所有电影的爬虫,不用钱就可以看会员电影!

    一墨编程学习
  • Python爬虫源码,抓取腾讯视频所有电影

    Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以小的给各位看官们准备了高价值Python学习视频教程及相关电子版书籍,都放在了文章...

    python学习教程
  • python爬虫-python实现的抓取腾讯视频所有电影

    soup = BeautifulSoup(html) #过滤出分类内容

    python学习教程
  • PHP解析url并得到url参数方法总结

    砸漏

扫码关注云+社区

领取腾讯云代金券