用JAVA写一个知乎爬虫
用java来实现一个知乎爬虫
操作方法
(01)这里,耗费了不少的业余时间,专门为爬虫入门或初中级写了一个知乎爬虫。为什么选择知乎呢?应为这里例子可以尽量多的将爬虫涉及的技术点包含进去,同时又不至于那么复杂,学习和提升兼顾。下面说明知乎爬虫的源码和涉及主要技术点:(1)程序package组织
(02)(2)模拟登录(爬虫主要技术点1)要爬去需要登录的网站数据,模拟登录是必要可少的一步,而且往往是难点。知乎爬虫的模拟登录可以做一个很好的案例。要实现一个网站的模拟登录,需要两大步骤是:(1)对登录的请求过程进行分析,找到登录的关键请求和步骤,分析工具可以有IE自带(快捷键F12)、Fiddler、HttpWatcher;(2)编写代码模拟登录的过程。
(03)(3)网页下载(爬虫主要技术点2)模拟登录后,便可下载目标网页html了。知乎爬虫基于HttpClient写了一个网络连接线程池,并且封装了常用的get和post两种网页下载的方法。
(04)(4)自动获取网页编码(爬虫主要技术点3)自动获取网页编码是确保下载网页html不出现乱码的前提。知乎爬虫中提供方法可以解决绝大部分乱码下载网页乱码问题。
(05)(5)网页解析和提取(爬虫主要技术点4)使用Java写爬虫,常见的网页解析和提取方法有两种:利用开源Jar包Jsoup和正则。一般来说,Jsoup就可以解决问题,极少出现Jsoup不能解析和提取的情况。Jsoup强大功能,使得解析和提取异常简单。知乎爬虫采用的就是Jsoup。
(06)(6)正则匹配与提取(爬虫主要技术点5)虽然知乎爬虫采用Jsoup来进行网页解析,但是仍然封装了正则匹配与提取数据的方法,因为正则还可以做其他的事情,如在知乎爬虫中使用正则来进行url地址的过滤和判断。
(07)(7)数据去重(爬虫主要技术点6)对于爬虫,根据场景不同,可以有不同的去重方案。(1)少量数据,比如几万或者十几万条的情况,使用Map或Set便可;(2)中量数据,比如几百万或者上千万,使用BloomFilter(著名的布隆过滤器)可以解决;(3)大量数据,上亿或者几十亿,Redis可以解决。知乎爬虫给出了BloomFilter的实现,但是采用的Redis进行去重。
(08)(8)设计模式等Java高级编程实践除了以上爬虫主要的技术点之外,知乎爬虫的实现还涉及多种设计模式,主要有链模式、单例模式、组合模式等,同时还使用了Java反射。除了学习爬虫技术,这对学习设计模式和Java反射机制也是一个不错的案例。
(09)4. 一些抓取结果展示
特别提示
配置参数准确度
-
二十岁的某一天歌词意思
《二十岁的某一天》是花粥专辑的第一首单曲,也是花粥几年前最早被听众熟知的一系列歌曲之一。天桥边的男女花五块钱吃了一碗牛肉面,然后故事会有怎样?且听花粥不动声色娓娓道来。操作方法(01)花粥的歌,清新慵懒。二十岁的某一天,是其早期作品之一。其歌词如下:20岁的某...
-
人民币符号怎么打¥ word插入人民币符号?
人民币符号怎么打?我们在工作的时候,有时候需要在电脑上输入“¥”这个人民币符号,然而很多用户不知道该怎么输入,这给工作带来了很大的不便。其实人民币符号的输入方法很简单,下面小编给大家介绍几种输入方法。操作方法(01)使用输入法工具在中文状态下,使用Shift+$/4键,...
-
微信openid获取教程
用微信支付平台发放红包必须上传用户的微信openid,想要导出微信openid可以按以下步骤来做。操作方法(01)进入微信openid导出平台,根据下图1更新列表;2刷新粉丝信息;3导出数据;(02)获得的微信平台openid数据如下(03)把openid拷贝到t型台文件里,格式如下。(04)导入到微信商户平...
-
谷歌浏览器语言设置,谷歌浏览器如何更改语言
谷歌浏览器语言怎么设置,谷歌浏览器如何更改语言。虽然在国内,大多数人也都是用中文,但也不有少英语爱好者喜欢用外语,那么下面我就来说下谷歌浏览器语言怎么设置,谷歌浏览器如何更改语言。操作方法(01)首先点击打开GoogleChrome浏览器。(02)点击打开后,进入到我们最为习...