首发于 Accelerator的日常学习与分享
知乎爬虫之2:爬虫流程设计

知乎爬虫之2:爬虫流程设计

本文由博主原创,转载请注明出处: 我的博客-知乎爬虫之爬虫流程设计

git爬虫项目地址(关注和star在哪里~~): github.com/MatrixSeven/

说到爬虫,其实写起来很简单,爬虫无非就是将自己想要的内容在页面上抽离出来,并且存储。这个过程在今天已经变得非常轻松,在Java下有Jsoup,Python下有BS4,还有通吃的正则等等,然而真正难的却是在于伪造请求,截获分析请求参数,获取正确的页面.
首先来说,一个能混得过去的爬虫,应该有一个优秀的流程,在明确自己的目标后,应该立马去设计爬虫工作流程,而不是去无脑的Coding。

那么今天咱们就先研究下咱们这个爬虫的目标和流程。
首先咱们是要获取知乎页面上的个人信息,关注和被关注信息,首先咱们会遇到第一个问题就是登陆,咱们这里暂且不讲,
其次咱们就是要给定一个初始化url,然后进行followers的和followees的获取,然后循环爬起来,那么其中一定会遇到数据重复和人物关系建立的问题。

1.过滤重复数据

这个相对而言比较简单,有几种常规方法:

首先来说第一种,数据库设置主键,锁定人物ID,这个方法可以使数据永远不重复,但是也会造成批量插入的时候造成出错
第二种方法,存入数据时查询数据库数据,可行,但是多次访问数据库,造成效率低下
第三种方法,使用缓存队列,在缓存中查找数据判断,这种方法很好,而且速度相对较快,但是缓存太多容易出现OOM问题

在这里咱们不选择某一种方案,而是采用主键+优先缓存+数据库查询方式,后期自己实现一个LRU缓存队列,提供命中率

2. 爬取时创建人物关系

这个问题思考了很久,也比较恶心,在人物不确定的情况下进行人物的获取和关系的创建,怎么处理好呢。我的想法是让每一个人员信息携带一个上级信息,来判断是否能够构建人物关系,有点类似于尾递归的思想。

3. 绘制流程图

那么对于咱们的一个整体流程目前就有了(挑战一下,还是放弃了、哈哈):

获取URL–》解析—》判断—》更新/携带信息?—》分析跟随者/根系关注者–》解析页面
最终画出真正的流程图


//吾爱Java(QQ群): 170936712(点击加入)

深圳SEO优化公司黄山关键词排名包年推广哪家好临沂营销型网站建设广元百度seo推荐西安网站制作喀什网站设计通辽网站推广公司宿州外贸网站设计哪家好长春网站优化软件多少钱东莞网站设计模板报价遵义外贸网站建设坪地建网站多少钱天津网站设计模板报价绥化阿里店铺运营推荐常德如何制作网站推荐焦作网站定制沙井设计网站公司龙岩seo推荐广安网站优化推广公司永州如何制作网站怒江企业网站制作报价孝感网站优化按天收费多少钱淮北外贸网站建设推荐中山百度竞价推荐黔南网站关键词优化哪家好钦州网站优化推广公司辽阳网络广告推广公司罗湖关键词排名包年推广报价西宁网站改版多少钱邢台网站推广报价咸宁网站搭建哪家好歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化