一个大胆的想法,爬取简书所有的文章信息

作者: 渔父歌 | 来源:发表于2018-07-12 20:20 被阅读106次

    在上一篇我们写了一个爬虫脚本,这个脚本可以通过用户的 uid爬取对应用户的所有文章的信息并保存到本地。

    既然我们已经可以爬取单个用户的所有文章了,那我们就想,是否能够爬取更多用户的文章信息?

    比如说我们定个小目标:爬取所有简书用户的文章信息。

    这个小目标好像有点难度,那我们再定一个小小目标,先爬他个一万篇文章的信息。

    这样看起来就简单多了,等我们爬到了一万篇文章信息,再爬十万、一百万、一 ... ..、最后就是简书所有的文章了,嘿嘿嘿( •̀ ω •́ )y。

    既然已经确定了目标,那么就让我们行动起来。

    项目文章,想看结果的可以点下面链接:
    一:实战:爬取简书之搭建程序框架

    一、爬取思路

    磨刀不误砍柴工,在敲代码之前让我们先来讨论一下应该怎么爬取。

    清晰的思路往往可以使我们的劳动达到事半功倍的效果。

    第一个问题:如何获取用户 uid

    我们知道,每个用户都会关注一些其他的用户,而这些被关注的用户也有自己关注的用户,这样一直循环。

    所以我们的爬虫思路就是,先找一批关注数量较多的用户,以这些用户为起点,爬取他们所关注的用户。

    这样我们就获得了第一批的用户 uid,然后在第一批用户的基础上再爬取第一批用户的关注,这样我们就获得了第二批用户,如此往复,只要时间够长,我们就能够获取简书绝大部分的用户 uid。

    第二个问题:如何获取用户文章信息

    这个问题我们已经在上一篇讲过了,不知道的可以取看看

    python爬虫系列之数据存储实战:爬取简书用户文章列表并保存

    第三个问题:如何保存数据

    对于较大的数据量,数据库肯定是第一选择。但是我们还没讲过如何使用数据库,所以只好用 csv了。

    那为什么不用 json呢?原因我们在上一篇讲过,json不能逐条保存数据,而我们要爬取的数据量又比较大,不能全保存在缓存里等到最后再写入,所以就只能用 csv了。

    二、程序结构

    1. 请求模块

      接受一个 url,返回 url对应网页的 xpath对象

      需求:

      • 能随机切换 user-agent
      • 可以设置代理
      • 能对返回结果进行一定的预处理
    2. uid 解析模块

      解析用户 uid

      需求:

      • 能够自动去除已爬取过的 uid
      • 可以不断返回 uid-->生成器
    3. 数据爬取模块

      接受一个 uid作为参数,返回 uid对应用户的所有文章信息

      需求:

      • 返回信息为字典格式
      • 自动判断是否爬取结束
    4. 数据保存模块

      接受一个字典的列表,将数据保存到对应的文件中

      需求:

      • 将字典格式的数据保存到文件中
    5. 断点续爬

      在出现意外情况后能够从上次中断的地方继续爬取

      需求:

      • 断点续爬

    以上就是程序的大体框架和功能,细节部分后面我们慢慢完善。

    如果你有什么想法,欢迎评论留言一起参与这个项目。

    项目的源代码会发布在 GitHub上,下一篇我们先把程序的框架完成。

    觉得写的不错?点赞、评论、关注三连来一套(。^^)

    上一篇:python爬虫系列之数据存储实战:爬取简书用户文章列表并保存
    下一篇:实战:爬取简书之搭建程序框架

    相关文章

      网友评论

      • 柠樂helen:爬完用在什么场景
        渔父歌:@柠樂helen 也可以用来做数据分析,比如什么样的标题阅读数量多
        渔父歌:@柠樂helen 筛选优质文章,为进一步爬取提供数据,其他的就看你想法了
      • 孙亖:然后怎么使用?
        渔父歌:@孙亖 代码还没开始敲呢,完成品的话,直接运行就行。

      本文标题:一个大胆的想法,爬取简书所有的文章信息

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