你的位置:首页 > 软件开发 > Java > 那些年的知乎爬虫

那些年的知乎爬虫

发布时间:2016-01-20 23:01:32
好久没写博客了。。前阵子项目忙着上线,现在有点空闲,就把最近写的一个爬虫和大家分享下。 这个程序源于一个作业,我把最后的统计结果放在了自己买的阿里云服务器上,就是一个知乎爬虫程序。 以下是我抓取到的部分数据统计结果(): 程序是在工作 ...

那些年的知乎爬虫

好久没写博客了。。前阵子项目忙着上线,现在有点空闲,就把最近写的一个爬虫和大家分享下。

这个程序源于一个作业,我把最后的统计结果放在了自己买的阿里云服务器上,就是一个知乎爬虫程序。

以下是我抓取到的部分数据统计结果():

那些年的知乎爬虫

 

那些年的知乎爬虫

 

     程序是在工作之余写的,用了java 的webmgic 框架,这是国内黄亿华大师的作品,框架的核心思想借鉴了python 的scrapy 爬虫。之前也有用scrapy 抓取过一些数据,但这次想尝试下新的东西,结果真的很赞。

     简单来说,这个爬虫程序被分为了以下4个部分:

Downloader:下载器,一心一意从给的的url中下载网页。

PageProcessor:页面分析器,负责页面分析,并提取链接。

Scheduler:调度器,从事url  管理,从PageProcessor 获取url,然后把它交给Downloader 下载。

Pipeline:管道,负责将分析后的内容保存起来,mysql  或者文件中。

     嗯,框架的整个架构很清晰,另外还有就是webmagic 的一大特色,就是框架使用了Ioc的思想,提供了注解的功能,结合mybatis  框架,及其方便的的实现了PageProcessor 和Pipeline这两部分。如果从网页中通过正则或者xpath 提取数据不需要经过二次处理,则我们可以用很少的代码量便可将数据插入数据库,当然如果要将数据加工处理完再放入数据库的话,就要自己写个PageProcessor。

     在写这个程序的时候,踩过一些坑,这里简单说一下。

      1、在使用scheduler的时候,webmagic  支持提供了RedisScheduler和FileCacheQueueScheduler,我选择了前者,默认只支持使用一个数据库,后面稍微拓展了下,允许通过传入 index 来指定redis中数据库,这样就可以实现多个爬虫同时实用redis 中不同的数据库了。

      2、阿里云安装redis 时候,一开始没有到redis.conf中设置daemonize  为yes  ,导致在shell  中启动redis  卡死了好些次。

      3、爬虫爬了半天后,先后出现这两个错,

1.WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.2.WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:那些年的知乎爬虫

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录