呓语 | 杨英明的个人博客

专注于c++、Python,欢迎交流

By

[顶] 如何写一个简单的分布式知乎爬虫?

很早就有采集知乎用户数据的想法,要实现这个想法,需要写一个网络爬虫(Web Spider)。因为在学习 python,正好 python 写爬虫也是极好的选择,所以写了一个基于 python 的网络爬虫。

几个月前写了爬虫的初版,后来因为一些原因,暂时搁置了下来。最近重新拾起这个想法,首先优化了代码的结构,然后在学弟的提醒下,从多线程改成了多进程,一台机器上运行一个爬虫程序,会启动几百个子进程加速抓取。

但是一台机器的性能是有极限的,所以后来我使用 mongodb 和 redis 搭建了一个主从结构的分布式爬取系统,来进一步加快抓取的速度。

然后我就去好几个服务器厂商申请免费的试用,比如百度云、腾讯云、Ucloud…… 加上自己的笔记本,断断续续抓取了一个多周,才采集到300万知乎用户数据。中间还跑坏了运行网站的云主机,还好 自动备份 起作用了,数据没有丢失,但那又是另外一个故事了……

废话不多说,下面我介绍一下如何写一个简单的分布式知乎爬虫。

By

[顶] 大数据报告:知乎百万用户分析

最近用 python 爬虫抓取了知乎用户个人信息(公开信息),去重之后有300+万用户信息(公开信息),为了得到这些数据,还不小心跑崩了一台服务器…… 当然主要是配置太低。

手头有了数据也不能闲着,于是就有了这篇分析报告,这篇报告做了一些浅显的数据分析,主要目的是练练手,大家看个热闹,高手勿笑。

数据量:3,289,329 人。

数据采集工具:分布式 python 爬虫

分析工具:ElasticSearch + Kibana

分析角度包括:地理位置、男女比例、各类排名、所在高校、活跃程度等。

By

[顶] Python 学习拾遗

该博文主要适应于python2.7,并没有对py3进行测试。

主要记录学习python过程中容易出现的一些小问题、小错误,相信能给你启发。

By

【2018秋招笔试】2018.9.20 小米 测试工程师

前段时间在做数学建模比赛,所以前几天也没时间帮对象做笔试题。

比赛刚告一段落,今天晚上就出现了两个笔试题,还冲突了。

对象做完一个才想起来小米的也是今晚笔试,好在还有四十分钟结束,于是继续转战小米的笔试题,飞快的昨晚单选题和多选题,只剩十分钟时间做编程题。

编程题有两道,打眼一看应该都能用搜索解决,第一题比较典型,很快解决AC,做第二题的时候还有一分钟,没搞定0%。

By

【2018秋招笔试】2018.9.7 哔哩哔哩 算法工程师

哔哩哔哩笔试题很实在,直接出了三道编程题。

题目不是太难,一道简单dp,两道模拟题,全部AC。

By

【2018秋招笔试】2018.9.6 美团 算法工程师

美团的算法工程师题型有选择题和编程题,2道编程题过了一道半。

By

【2018秋招笔试】2018.9.7 阿里巴巴 测试工程师

阿里的测试选择题出了不少数学题,概率论,组合数学,比较难,不愧是大厂。

编程题有两道,过了一道半。

By

【2018秋招笔试】2018.9.9 第四范式 图像应用工程师

第四范式对象投的 图像应用工程师,90分钟,选择题30道,编程题2道。

选择题做的一般,编程题全部AC。

By

【2018秋招笔试】2018.9.9 字节跳动 算法工程师

字节跳动出了5道编程题,可以说非常实在了……

2个小时,一共过了3道半。第四题的题目描述没看懂,和测试样例对不上……

By

【2018秋招笔试】2018.9.12 华为笔试

华为笔试比较实在,三道编程题,一道200分,2个小时。

题目不难,两道模拟题,一道大数乘法,20分钟全部AC。

By

2018.8.22-28 青海湖自驾三日游 && 西安半日游

去青海湖游玩这个念头,起源于几年前对老妹的承诺。

“等你高考结束了,带你出去玩。”

老妹一直没出过远门,作为哥哥想在她高考结束后带她看看外面的世界,同时作为她的成年礼物。

生活需要仪式感嘛,人生的每个阶段都应该得到尊重。

正好前些年,有同学去青海湖骑行,我开始冒出青海湖游玩的念头。加上今年茶卡盐湖在抖音上火得一塌糊涂,于是今年暑假便有了青海湖自驾三日游。

By

使用 TensorFlow 搭建神经网络预测泰坦尼克号乘客生存率(Kaggle => Titanic: Machine Learning from Disaster)

By

第二届 Bilibili World 体验

By

2018 年 6 月份阅读记录

By

hexo-theme-freemind.386 主题设置图片居中

Hexo 是一款轻量级的博客框架,可以很轻松的生成静态网站,常用于搭配 gitpage 搭建博客。

而 hexo-theme-freemind.386 是 Hexo 的一款主题,github 主页见:blackshow/hexo-theme-freemind.386

本博客便采用了 Hexo 的 hexo-theme-freemind.386 主题搭建。

By

2018 年 5 月份阅读记录

By

ElasticSearch + Kibana 安装配置(CentOS)

部署环境:CentOS 7 64bit

使用组件:ElasticSearch 5.4、Kibana 5.4

实例描述:在一台服务器上搭建 ElasticSearch + Kibana,并使内网可访问,假设服务器地址为 172.16.4.44 。搭建好之后,同一内网中的机器都可以访问这个地址进入 Kibana 查看 ElasticSearch 中的数据。

组件下载:ElasticSearch 5.4Kibana 5.4 均采用原生版本

注意:ElasticSearch 需要 java8 以上环境,这里假设你已经安装好。

By

解决 VPS 经 SS 访问 Google Schoolar 受限的问题(补充)

本文主要解决通过 ss 访问 谷歌学术,报如下错误的问题:

提示信息为:

We're sorry... but your computer or network may be sending automated queries. To protect our users, we can't process your request right now.

网上找到一篇文章可以基本解决这个问题:解决VPS经SS访问Google Schoolar受限,但是我在尝试的过程中发现有些坑还是花费了不少时间,下面针对这些坑对上文进行补充性的建议。

By

使用 Frp 进行内网穿透(在外网用 ssh 登录校园网中的服务器)

最近想在外网用 ssh 登录内网(校园网)的服务器,以便在外网也能跑跑实验什么的,于是研究了一下常用的内网穿透工具,下面分享下我的心得。

首先介绍一下 内网穿透解决的痛点,比如导师在你们实验室买了一台高配服务器,装配有高端显卡,可以用来跑深度学习模型,你在实验室玩的很开心。但是到了暑假你不得不离开实验室,回到家里的外网没法访问处于实验室内网的服务器,vpn也没法用!这怎么办呢,这个时候可以用内网穿透工具来解决这个问题啦!

部署的思路 是把内网穿透工具的客户端部署在内网服务器中,然后在有独立域名的 VPS 中部署内网穿透工具的服务端,然后你在外网的随便一台机器上用 ssh 登录你的 VPS 的 IP 和配置好的端口,便可以登录内网的服务器啦!

其实 原理 就是把 VPS 当做一个“桥”,和内网的操作全部通过互联网和这个“桥”连通,这样便打穿了内网和外网的界限。

By

2018 年 2 月份阅读记录

By

2018 年 1 月份阅读记录

By

2017 年 12 月份阅读记录

By

Django 自定义装饰器进行登录访问限制

我们在设计网站用户系统的时候,往往需要进行登录访问限制,比如说用户还没有登录的时候,有些网页是不能访问的。

最简单粗暴的办法是,在每个页面的函数最开始加一个 登录验证函数,检查当前用户登录状态:如果已经登陆过,那么继续往下执行;如果用户还没登录,对不起,出门左转到登录页。

在 python 中有个优雅的解决办法——使用 装饰器。Django 中有提供使用装饰器进行登录访问限制的方法,详情可见 django实现用户登陆访问限制@login_required,如果对自己实现这套机制感兴趣的童靴,可以继续往下看。