美文网首页大数据 爬虫Python AI Sql
打造python全站爬虫,采集整站小说到Excel!

打造python全站爬虫,采集整站小说到Excel!

作者: 1a076099f916 | 来源:发表于2018-12-07 15:02 被阅读4次
    打造python全站爬虫,采集整站小说到Excel!

    1.目标(加小编Python学习群:943752371即可自动获取大量python视频教程以及各类PDF和源码案例!)

    找到各类排行旁的的每一部小说的名字,和在该网站的链接。

    2.观察页的结构

    打造python全站爬虫,采集整站小说到Excel!

    很容易就能发现,每一个分类都是包裹在:

    打造python全站爬虫,采集整站小说到Excel!

    之中,

    这种条理清晰的网站,大大方便了爬虫的编写。

    在当前页面找到所有小说的连接,并保存在列表即可。

    3.列表去重的小技巧

    就算是不同类别的小说,也是会重复出现在排行榜的。

    这样无形之间就会浪费很多资源,尤其是在面对爬大量网页的时候。

    这里只要一行代码就能解决:

    打造python全站爬虫,采集整站小说到Excel!

    这里调用了一个list的构造函数set:这样就能保证列表里没有重复的元素了。

    4.代码实现

    模块化,函数式编程是一个非常好的习惯,坚持把每一个独立的功能都写成函数,这样会使代码简单又可复用。

    • 网页抓取头
    打造python全站爬虫,采集整站小说到Excel!
    • 获取排行榜小说及其链接:
    • 爬取每一类型小说排行榜,按顺序写入文件。文件内容为:小说名字+小说链接。将内容保存到列表,并且返回一个装满url链接的列表
    打造python全站爬虫,采集整站小说到Excel! 打造python全站爬虫,采集整站小说到Excel!
    • 获取单本小说的所有章节链接:

    <pre class="ql-align-justify" style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: Consolas, Menlo, Courier, monospace; font-size: 16px; white-space: pre-wrap; position: relative; line-height: 1.5; color: rgb(153, 153, 153); margin: 1em 0px; padding: 12px 10px; background: rgb(244, 245, 246); border: 1px solid rgb(232, 232, 232); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">获取该小说每个章节的url地址,并创建小说文件
    </pre>

    打造python全站爬虫,采集整站小说到Excel!
    • 获取单页文章的内容并保存到本地
    • 这里有个小技巧:
    • 从网上爬下来的文件很多时候都是带着
      之类的格式化标签,可以通过一个简单的方法把它过滤掉:
    • html = get_html(url).replace('
      ', ' ')
    • 这里单单过滤了一种标签,并将其替换成‘ ’用于文章的换行,
    打造python全站爬虫,采集整站小说到Excel!
    • 主函数
    打造python全站爬虫,采集整站小说到Excel!
    • 输出结果
    打造python全站爬虫,采集整站小说到Excel! 打造python全站爬虫,采集整站小说到Excel!

    5.缺点

    本次爬虫写的这么顺利,更多的是因为爬的网站是没有反爬虫技术,以及文章分类清晰,结构优美。

    但是,按照这篇文的思路去爬取小说,大概计算了一下:一篇文章需要:0.5s,一本小说(1000张左右):8.5分钟,全部排行榜(60本): 8.5小时!

    那么,这种单线程的爬虫,速度如何能提高呢?

    自己写个多线程模块?

    其实还有更好的方式: Scrapy框架

    后面可将这里的代码重构一边遍,速度会几十倍甚至几百倍的提高了!这其实也是多线程的威力!

    相关文章

      网友评论

        本文标题:打造python全站爬虫,采集整站小说到Excel!

        本文链接:https://www.haomeiwen.com/subject/tnmthqtx.html