前言

酒香不怕巷子深“,这样的想法在这个时代已经算是非常地消极和落伍的一个思想了。

就像是一部电影,如战狼、哪吒这样,优秀的宣发能够带来远超电影本身质量的收益;而反过来,如闪光少女这样的电影,质量足以称为上乘,但是票房确差强人意,这就是典型的忽视了市场规则的下场。

访问量、点赞、收藏、投币等要素共同决定了一个视频的热度。但是,除了前者之外,都需要一个确切的 B 站账户,笔者目前还没有能力来维持一个基数庞大的 B 站账号池,所以就只能在第一个要素,点击量 上下文章咯。

>
spider访问量BiliBili

1. 基础

1.1 常识

Redis 是用 C 语言开发的一个开源的高性能键值对(key-value)数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止 Redis 支持的键值数据类型如下:

  • 字符串类型
  • 散列类型
  • 列表类型
  • 集合类型
  • 有序集合类型
>
redis

在进行网页爬虫的项目时,常常会因为爬取的频率过高而触发 反爬虫机制 ,这时候,面临两个选择:

  1. 休息片刻。一般反爬虫机制不会进行永久的 IP 封禁,只是暂时限制访问而已,等待封禁时间结束再进行爬取即可。当然对于某些拥有黑名单机制的网站,如果封禁次数过多,封禁的时间也会随着这个次数而提高。
  2. 更换 IP。既然我的 IP 被封了,那么我换一个其他的 IP 不就行了。

显然,第二种方法更优于第一种,并且更加符合 geek 的风格。但是问题在于,从哪里寻找这样一个 IP 地址呢?

>

关于疫情

各地的疫情警报使得今年的春节有一种别样的味道。

我看到有人心系灾区捐款捐物,也看到有人趁此机会将自己推上舆论的风口攫取利益;我看到有人抱着舍身取义的心态奔赴一线,也看到有人仅将其作为茶余饭后的谈资不值一哂。

灾难面前众生百态,精彩如同一部小说,却远比我看过的任何小说都要精彩。对人的刻画,对社会的刻画,名为现实的大作家,以它的春秋笔法,将一切尽书于人前。

感慨就到这里吧,作为一个程序员,我们能做什么呢?

开启这个项目的起因是 severchain 发起的一个疫情推送功能,但是由于请求次数过多,服务器负载超限,不得已又停止了服务。我虽然不会做推送,但是搭建一个简单的疫情实况 api 还是很熟练地。

正好可以将寒假的两大技能 爬虫和 Flask ,做一个综合运用。

疫情之下

前言

到这里,python 爬虫部分的复习也就告一段落了,当然,除了 scrapy,老实说,对于平常爬取几千条这种小打小闹的爬虫,并没有去深入研究 scrapy 的必要(当然,了解还是要了解一下的)。

之前学习爬虫,因为需求的原因,只学习了网页爬虫。趁着寒假有空,再来看一看 app 爬虫是啥样的吧。

Pythonspider数据分析

文件 && 目录

目录大小 && 浏览和切换目录

  • pwd 当前路径

  • which 搜索可执行文件路径

  • ls 列出当前目录

    • -a all
    • -l list
    • -h 便于人类阅读
    • -t 按最近一次修改时间排序
    • -i 显示 inode
  • cd 切换目录

  • du 显示目录包含的 文件 大小 du 会深入遍历目录的每个子目录

    • -a 显示目录和文件的大小
    • -h
    • -s 只显示总计大小(summary)
linux

引入

根据笔者以往的爬虫经验,大部分的爬虫是在静态网页上完成的,爬虫所要做的只不过是提交请求,然后分析返回的页面即可。当然,api 本质上也可以作为静态页面来处理。这意味着只要掌握 requests 就可以完成 60%-80%的爬虫任务。

这是一个很惊人的占比,这里解释一下,静态页面可能听起来很 low,但是有着以加载速度更快、易于维护为核心的一系列优势,尤其是引入了 ajax 之后,实现了动态加载,通过更加频繁的前后端交互,使得用户的使用更加丝滑流畅。

但是总有一些网站是静态爬虫无法应付的。它们就是与 js 耦合度较高的,需要 js 进行渲染的页面,与上文所述的情况(前端只接收数据,而不用对数据进行计算层面的处理)不同,这类网站将部分的计算工作交托给前端,牺牲部分的用户体验来实现缓解服务器压力等一系列目的。

这就是剩下的 20%了。如何处理这些刺头呢?这就引出了本文的主角–splash。

>
spider

提高爬虫效率主要从三个方面开始复习。

  1. 并发
  2. ip
  3. cookies

并发必然引发的一个结果就是反爬虫机制,这种时候爬虫的效率不会因为并发而提高,反而会因为网站的防御机制拖累爬虫的速度。

自然而然地就引出了 2,代理爬虫。代理爬虫能够从多个 ip 发送请求,减小了单个 ip 的请求频率,自然触发反爬虫机制的概率也就小了很多。

但是新的问题又出现了,对于需要 登录 的网站,需要提交 cookies 来模拟登录情况,模拟登录不难,但是同一个 cookies 从不同的 ip 同时发送请求很明显不合常理,依然会触发反爬虫机制。

这是到目前为止我所遇到的影响爬虫效率的问题,就在这里做一个总结吧,如果后续遇到新的效率相关的问题,再做补充。

>
spider协程