博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
爬虫工程师
阅读量:5876 次
发布时间:2019-06-19

本文共 1480 字,大约阅读时间需要 4 分钟。

hot3.png

爬虫工程师 博客分类: 搜索引擎,爬虫  

1. 谈爬虫工程师的价值 

    大数据时代已到,数据越来越具有价值了,没有数据寸步难行,有了数据好好利用,可以在诸多领域干很多事,比如很火的互联网金融。从互联网上爬来自己想要的数据,是数据的一个重要来源,而且往往是必不可少的来源。所有,目前,爬虫工程师是一个非常吃香的职位,工资往往都不低,就是要耐得住寂寞了。那爬虫工程师的价值也就是能稳定的、高效的和实时的带来数据。这里推荐看两篇文章: 
http://www.hzzx.gov.cn/cshz/content/2014-08/25/content_5417124.htm 
http://www.tuicool.com/articles/Fb6fy2f 
2. 爬虫(或互联网数据采集)怎么入门 
     爬虫可以很快的入门,但要做的真正大神,还必须不断实践。因为,一旦真正爬数据的时候就会出现各种问题,因为爬虫本质是一种对抗性的工作,你需要和反爬人员斗智斗勇。不过,这个过程会充满无穷的乐趣,还会把你锤炼成真正的爬虫高手。 
3. 专门为爬虫入门而写的知乎爬虫 
     这里,耗费了不少的业余时间,专门为爬虫入门写了一个知乎爬虫。为什么选择知乎呢?应为这里例子可以尽量多的将爬虫涉及的技术点包含进去,同时又不至于那么复杂,方便入门。下面说明知乎爬虫的源码和涉及主要技术点: 
模拟登录(爬虫主要技术点1) 
    要爬去需要登录的网站数据,模拟登录是必要可少的一步,而且往往是难点。知乎爬虫的模拟登录可以做一个很好的案例。要实现一个网站的模拟登录,需要两大步骤是:(1)对登录的请求过程进行分析,找到登录的关键请求和步骤,分析工具可以有IE自带(快捷键F12)、Fiddler、HttpWatcher;(2)编写代码模拟登录的过程。 
网页下载(爬虫主要技术点2) 
    模拟登录后,便可下载目标网页html了。知乎爬虫基于HttpClient写了一个网络连接线程池,并且封装了常用的get和post两种网页下载的方法。 
自动获取网页编码(爬虫主要技术点3) 
自动获取网页编码是确保下载网页html不出现乱码的前提。知乎爬虫中提供方法可以解决绝大部分乱码下载网页乱码问题。 
  网页解析和提取(爬虫主要技术点4) 
使用Java写爬虫,常见的网页解析和提取方法有两种:利用开源Jar包Jsoup和正则。一般来说,Jsoup就可以解决问题,极少出现Jsoup不能解析和提取的情况。Jsoup强大功能,使得解析和提取异常简单。知乎爬虫采用的就是Jsoup。 
                                    
  正则匹配与提取(爬虫主要技术点5) 
    虽然知乎爬虫采用Jsoup来进行网页解析,但是仍然封装了正则匹配与提取数据的方法,因为正则还可以做其他的事情,如在知乎爬虫中使用正则来进行url地址的过滤和判断。 
  数据去重(爬虫主要技术点6) 
    对于爬虫,更具场景不同,可以有不同的去重方案。(1)少量数据,比如几万或者十几万条的情况,使用Map或Set便可;(2)中量数据,比如几百万或者上千万,使用BloomFilter(著名的布隆过滤器)可以解决;(3)大量数据,上亿或者几十亿,Redis可以解决。知乎爬虫给出了BloomFilter的实现,但是采用的Redis进行去重。 
    除了以上爬虫主要的技术点之外,知乎爬虫的实现还涉及多种设计模式,主要有链模式、单例模式、组合模式等,同时还使用了Java反射。除了学习爬虫技术,这对学习设计模式和Java反射机制也是一个不错的案例。 

 

转载于:https://my.oschina.net/xiaominmin/blog/1599581

你可能感兴趣的文章
图片预览
查看>>
js用定时器实现进度条
查看>>
memcache cas 乐观锁
查看>>
Java数据结构漫谈-Stack
查看>>
推荐《人月神话》32周年中文纪念版
查看>>
【教程】如何定制自己的信息源
查看>>
20111113
查看>>
LeetCode 411: Minimum Unique Word Abbreviation
查看>>
软件工程第二次作业-个人实战
查看>>
To: throughout the year, can MBT Baridi
查看>>
精通javascript笔记(智能社)——简易tab选项卡及应用面向对象方法实现
查看>>
How to use Git and svn together
查看>>
位运算符与逻辑运算符在操作逻辑型数据时的区别
查看>>
【WPF】控件使用-宽度自动适应窗口大小
查看>>
C++中的对象的赋值和复制
查看>>
Python day2
查看>>
当我们谈论CloudTable时究竟在谈论什么?
查看>>
map和flatMap
查看>>
Vue2.0 vue-source.js jsonp demo vue跨域请求
查看>>
CF865D Buy Low Sell High
查看>>