1.1 什么是网络爬虫
1.1.1 爬虫的简单定义
网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。
简单来说:使用事先写好的程序去抓取网络上所需要的数据,这样的程序就叫网络爬虫。
1.1.2 爬虫的分类
网络爬虫可以分为通用网络爬虫(如搜索引擎的爬虫,根据几个URL的种子不断的去抓取数据)和聚焦网络爬虫(有选择性的抓取预先定义好的主题和相关页面的网络爬虫)。
A.通用网络爬虫:
搜索引擎中第一步就是爬虫。但是搜索引擎中的爬虫是一种广泛获取各种网页的信息的程序;除了HTML文件外,搜索引擎通常还会抓取和索引文字为基础的多种文件类型,如TXT,WORD,PDF等; 但是对于图片,视频,等非文字的内容则一般不会处理;但是对于脚本和一些网页中的程序是不会处理的;
进群:548377875 即可获取数十套PDF以及大量的学习教程哦!从零基础到项目实战的PDF哦!
B.聚焦网络爬虫:
针对某一特定领域的数据进行抓取的程序。比如旅游网站,金融网站,招聘网站等等;特定领域的聚集爬虫会使用各种技术去处理我们需要的信息,所以对于网站中动态的一些程序,脚本仍会执行,以保证确定能抓取到网站中的数据;
1.2 为什么需要爬虫
1.2.1 爬虫的用途
A.解决冷启动问题:对于很多社交类的网站,冷启动是很困难的。对于新注册的用户而言,要留住他们,需要先注入一批假用户,已构造社区的氛围。一般这些假的用户可以通过网络爬虫从微博或其他APP中抓取而来;今日头条等互联网媒体最早也就是使用了爬虫+网页排序的技术,所以它们解决冷启动的方式也是需要爬虫;
B.搜索引擎的根基:做搜索引擎少不了爬虫程序;
C.建立起知识图谱,帮助建立机器学习的训练集:
D.可以制作各种商品的比价,趋势分析等:
E.其他:比如分析淘宝上竞争对手的数据;分析微博的数据传递影响力,政府的舆情分析,分析人与人之间的关系等等;
总之一句话:在当今的大数据时代,做任何价值分析的前提是数据,而爬虫则是获得这个前提的一个低成本高收益手段;而对同学们而言,另一个重要的价值是解决就业问题。Python爬虫工程师的招聘情况见:
https://www.lagou.com/jobs/list_python%20%E7%88%AC%E8%99%AB%E5%B7%A5%E7%A8%8B%E5%B8%88city=%E5%85%A8%E5%9B%BD&cl=false&fromSearch=true&labelWords=&suginput=
1.2.2怎么做爬虫
用Python做爬虫非常的简单,在交互式环境中简单的两行代码即可
****爬虫工程师的晋级之路,网络爬虫涉及哪些技术:
初级爬虫工程师:
1. Web前端的知识:HTML, CSS, JavaScript, DOM, DHTML, Ajax, jQuery,json等;
2. 正则表达式,能提取正常一般网页中想要的信息,比如某些特殊的文字,链接信息,知道什么是懒惰,什么是贪婪型的正则;
3. 会使用re, BeautifulSoup,XPath等获取一些DOM结构中的节点信息;
4. 知道什么是深度优先,广度优先的抓取算法,及实践中的使用规则;
5. 能分析简单网站的结构,会使用urllib,urllib2或requests库进行简单的数据抓取;
中级爬虫工程师:
1. 了解什么是Hash,会使用简单的MD5,SHA1等算法对数据进行Hash以便存储;
2. 熟悉HTTP,HTTPS协议的基础知识,了解GET,POST方法,了解HTTP头中的信息,包括返回状态码,编码,user-agent,cookie,session等;
3. 能设置User-Agent进行数据爬取,设置代理等;
4. 知道什么是Request,什么是Response,会使用Fiddle, Wireshark等工具抓取及分析简单的网络数据包;对于动态爬虫,要学会分析Ajax请求,模拟制造Post数据包请求,抓取客户端session等信息,对于一些简单的网站,能够通过模拟数据包进行自动登录;
5. 对于比较难搞定的网站,学会使用phatomjs+selenium抓取一些动态网页信息;
6. 并发下载,通过并行下载加速数据抓取;多线程的使用;
高级爬虫工程师:
1. 能使用Tesseract,百度AI等库进行验证码识别;
2. 能使用数据挖掘的技术,分类算法等避免死链等;
3. 会使用常用的数据库进行数据存储,查询,如Mongodb,Redis(大数据量的缓存)等;下载缓存,学习如何通过缓存避免重复下载的问题;Bloom Filter的使用;
4. 能使用机器学习的技术动态调整爬虫的爬取策略,从而避免被禁IP封号等;
5. 能使用一些开源框架Scrapy,Celery等分布式爬虫,能部署掌控分布式爬虫进行大规模的数据抓取;
网友评论