爬虫的介绍
-
什么是爬虫
网络爬虫也叫网络蜘蛛,指的是在互联网上像蜘蛛一样在各个网站上采集数据的网络程序。
-
有什么作用
通过有效的爬虫手段批量采集数据,可以降低人工成本,提高有效数据量,给予运营/销售的数据支持,加快产品发展。
-
应用领域
- 批量采集某个领域的招聘数据,对某个行业的招聘情况进行分析
- 批量采集某个行业的电商数据,以分析出具体热销商品,进行南业决策,采集目标客户敌据,以进行后续营销
- 批量爬取腾讯动漫的漫画,以实现脱网本地集中浏览
- 开发一款火车票抢票程序,以实现自动抢票
- 取评论,舆情监控
- 爬取说说信息,分析上线时间
- …
-
业界情况
目前互联网产品竞争激烈,业界大部分都会使用爬虫技术对竟品产品的数据进行挖烟、采集、大数据分析,这是必备手段,并目很多公司都设立了爬虫工程师的岗位
-
合法性
- 爬虫是利用程序进行批量爬取网页上的公开信息,也就是前端显示的数据信息,因为信息是完全公开的,所以是合法的。
- 其实就像刻览器一样,浏览器解析响应内容并渲染为页面,而爬虫解析响应内容采集想要的数据进行存储.
- 但民间流传出下面一段话:
爬虫爬得欢,监狱要坐穿:数据玩的遛,牢饭吃个够. - 要点:不影响到网站的正常业务,如果推广或商用要保证不损害网站的利益.
-
反爬虫
爬虫很难完全的制止,道高一尺魔高一丈,这是一场没有硝烟的战争,码农VS码农
反爬虫的一些手段:- 合法检测:请求校验(UserAgent,Referer,接口加签名等)
- 小黑屋:IP/用户限制请求频率,或直接栏截
- 投毒:反爬虫高境界可以不用栏藏,拦截是一时的,投毒返回虚假数据,可以误导竞品决策
- …
-
选择一门语言
- 只要能发送网络请求的语言都可以开发网络爬虫
- 比如c,c++,java,python… 而我以下的笔记都是基于Python而写的,但是对于爬虫而言,一些知识也是共通的.
-
爬虫的基本套路
-
基本流程
-
目标数据
-
来源地址
-
结构分析
- 具体数据在哪(网站、还是APP)
- 如何展示的数据
-
实现构思
-
操刀编码
-
-
基本手段
-
破解请求限制
-
请求头设置,如:UserAgent为有效客户端
-
控制请求频率(根据实际情景)
-
IP代理
-
签名/加密参数从html/cookie/is分析
-
破解登录授权
- 请求带上用户cookie信息
-
破解验证码
- 简单的验证码可以使用识图读验证码第三方库
-
-
-
解析数据
- HTML Dom解析
- 正则匹配,通过的正则表达式来匹配想要爬取的数据,如:有些数据不是在html标签里,而是在html的script标签的js变量中
- 使用第二方库解析html dom,比较喜欢类iquery的库
- 数据字符串
- 正则匹配根据情景使用
- 转JSON/XML对象进行解析
- HTML Dom解析
-
-
python爬虫
- python写爬虫的优势
- python语法易学,容易上手
- 社区活跃,实现方案多可参考
- 各种功能包丰富
- 少量代码即可完成强大功能
- 涉及模块包
- 请求
- urllib
- requests
- 多线程
- threading
- 正则
- re
- json解析
- json
- html dom解析
- beautiful soup
- lxml
- xpath
- 操作浏览器
- selenium
- 请求
- python写爬虫的优势