Hugo's Blog

If you’re afraid to fail, then you’re probably going to fail. –Kobe Bryant

Raft算法笔记

分布式算法学习

正文 最近在学习分布式相关的知识,正好看到了raft算法,在此记录一下自己的学习笔记。raft是工程上使用较为广泛的强一致性、去中心化、高可用的分布式协议。说到raft,还有一个不得不提的算法,Paxos。但是Paxos理解起来很难,然后自己对这方面还是积累未深,所以决定从raft开始学起。 raft是一个共识算法(consensus algorithm),用于分布式系统当中,实现多个节...

redis源码阅读(三)

dict -- 字典

字典简介 dict(dictionary字典),是一种以key-value形式存储的数据结构;通过hash函数对key求hash值获取value的位置,因此也叫hash表,是一种用来解决查找问题的数据结构,时间复杂度接近O(1)。对于Redis,它本身也叫REmote DIctionary Server,其实就是一个大字典,它的key通常来说是一个String类型,value的值可以是St...

redis源码阅读(二)

skiplist -- 跳跃表

跳跃表简介 跳跃表,是一种有序的数据结构,它相当于一个多层的链表,每个节点中维护多个指向其他节点的指针,从而达到快速访问节点的目的。跳跃表的查找操作平均时间复杂度为O(logN)。在大部分情况下,跳跃表的效率和平衡二叉树相当,并且跳跃表的实现更为简单。redis中的有序集合的底层实现,用的就是跳跃表,并且还在集群内部节点中也使用了跳跃表作为数据结构。 为什么会有跳跃表的出现(个人思...

redis源码阅读(一)

sds -- 动态字符串

SDS简介 sds(Simple dynamic string)是用C语言编写的一种字符串类型,可以动态的扩容,为redis中的基本数据结构之一。这个项目现在独立出来,github地址. sds有两个版本,在redis 3.2版本以前使用的第一个版本数据结构如下: typedef char *sds; // sds被定义为char*类型,具体好处见下文 struct sdshdr ...

数据整理技巧笔记二

非结构化数据整理

前言 最近在抓某日本电商网站的数据时,碰到了一个很恶心的情况;网页html通过后端渲染,并且没有id,class等可用的属性选择特定标签,页面的结构也不固定。这种情况在爬虫解析特定字段的时候就很头疼,没法通过xpath来选择所需要的字段,这里记录一下我针对这种情况的一种处理方式。 先看实际的例子: # info_html <div id="prd-page"> ...

tor代理搭建

使用tor解决爬虫ip问题

前言 最近准备在服务器上跑爬虫,首先要解决的问题就是IP的问题。常见的解决IP的方式是购买代理池服务,但是对于个人用户来说不友好,费用相当高。因此,tor代理就在这时派上了用场。 正文 准备 安装tor 服务器上装的是Centos7系统,在这里就只介绍Centos7的安装方式。其他系统的安装方式大同小异,具体可以google一下。 首先update...

数据整理技巧笔记一

非结构化数据整理

前言 在写爬虫抓取信息的时候,需要对信息进行初步的整理,然后才落盘数据。这时候,我们需要用程序来将凌乱的数据先进行一次结构化,方便我们对数据进行写库。在这里分享一个简单数据整理技巧。 ​ 在进行分享前,先拿一个案例作为例子: ​ 以某网站为例,这是一个目录表的网页结构,ul标签下为一级目录,每个目录有一个对应的id,下面的每一个div标签为该目录对应的子目录。那么我们应该如...

电商网站爬虫价格拆分策略

爬取电商平台通过价格拆分爬取商品

前言 对于大型电商平台,通常情况下商品列表页都会有翻页限制,即展示商品的数量限制。这种情况下,如果我们要抓取尽可能全的商品信息的话,就需要通过filter条件来进行遍历。当然策略可以根据具体的需求决定,比如通过销量排序,类别排序,品牌排序等等。这里主要介绍一个通用的遍历方式,即价格排序。 思考 普通的价格高低排序能否遍历完全 如果不能,那么如何确定价格区间,以及如何在...

python笔记(一)

python装饰器

前言 ​ 因为之前一直用的C,所以对于新接触的python一些特性不太适应,比如说python的装饰器(decorator),就在这里写点笔记,记录下学习理解python装饰器。 ​ 那什么是python装饰器,这里引用一段之前在别人blog上看到的一段修饰: 每个人都有的内裤主要功能是用来遮羞,但是到了冬天它没法为我们防风御寒,咋办?我们想到的一个办法就是把内裤改造一下,让它变...

电商网站爬虫逻辑

爬取电商平台常用逻辑套路

前言 最近在做电商平台苏宁的爬虫项目,在此记录下爬虫的逻辑设计,主要设计到爬虫的深度遍历和广度遍历。基本上运用这种逻辑可以应付很多类型的电商平台的爬取。 问题 如何遍历商品 如何确保能够遍历全 逻辑实现 ​ 根据上面的两个问题,先来看第一个问题。 遍历商品 品类 ​ 一般来说,上电商平台去购物, 就跟我们去超市一样,如何找到我们想要的商品,首先从商品的...