1. 什么是爬虫?

“网络爬虫”也叫“网络蜘蛛”,如果把互联网比喻成一个蜘蛛网,那么蜘蛛就是在网上爬来爬去的蜘蛛,爬虫程序通过请求url地址,根据响应的内容进行解析采集数据。

比如:如果响应内容是html,分析dom结构,进行dom解析、或者正则匹配,如果响应内容是xml/json数据,就可以转数据对象,然后对数据进行解析。

2. 有什么作用?

通过有效的爬虫手段批量采集数据,可以降低人工成本,提高有效数据量,给予运营/销售的数据支撑,加快产品发展。 

3. 业界的情况

目前互联网产品竞争激烈,业界大部分都会使用爬虫技术对竞品产品的数据进行挖掘、采集、大数据分析,这是必备手段,并且很多公司都设立了“爬虫工程师”的岗位

4. 合法性 

爬虫是利用程序进行批量爬取网页上的公开信息,也就是前端显示的数据信息。因为信息是完全公开的,所以是合法的。其实就像浏览器一样,浏览器解析响应内容并渲染为页面,而爬虫解析响应内容采集想要的数据进行存储。

 5. 反爬虫

爬虫很难完全的制止,道高一尺魔高一丈,这是一场没有硝烟的战争,码农VS码农 

反爬虫一些手段:

(1) 启动Robots协议。

(2)以设置阈值的方式挑选非正常访问。

(3)增加登录以限制。

(4)AJAX动态加载数据。

(5)以谋略取胜。例如:投毒。

 6. 选择一门语言

爬虫可以用各种语言写, C++, Java都可以, 为什么要Python?

首先用C++搞网络开发的例子不多(可能是我见得太少),然后由于Oracle收购了Sun, Java目前虽然在Android开发上很重要, 但是如果Google官司进展不顺利, 那么很有可能用Go语言替代掉Java来做Android开发. 在这计算机速度高速增长的年代里, 选语言都要看业绩, 真是稍不注意就落后于时代. 随着计算机速度的高速发展, 某种语言开发的软件运行的时间复杂度的常数系数已经不像以前那么重要, 我们可以越来越偏爱为程序员打造的而不是为计算机打造的语言. 比如Ruby这种传说中的纯种而又飘逸的的OOP语言, 或者Python这种稍严谨而流行库又非常多的语言, 都大大弱化了针对计算机运行速度而打造的特性, 强化了为程序员容易思考而打造的特性. 所以我选择Python。而且python语法易学,容易上手社区活跃,实现方案多可参考,各种功能包丰富,少量代码即可完成强大功能。

 7. 爬虫基本套路

基本流程: 目标数据、来源地址、结构分析、 实现构思、操刀编码。

基本手段:破解请求限制;请求头设置,如:useragant为有效客户端;控制请求频率(根据实际情景);IP代理; 签名/加密参数从html/cookie/js分析;破解登录授权; 请求带上用户cookie信息; 破解验证码;简单的验证码可以使用识图读验证码第三方库。

解析数据: HTML Dom解析;正则匹配,通过的正则表达式来匹配想要爬取的数据,如:有些数据不是在html 标签里,而是在html的script 标签的js变量中;使用第三方库解析html dom,比较喜欢类jquery的库; 数据字符串; 正则匹配(根据情景使用);转 JSON/XML 对象进行解析


1. 常用的工具

(1) python(2) pycharm(3) 浏览器:chrome、 火狐(4) fiddler

2. fiddler的使用

请求 (Request) 部分详解

Headers | 显示客户端发送到服务器的 HTTP 请求的,header 显示为一个分级视图,包含了 Web 客户端信息、Cookie、传输状态等

Textview | 显示 POST 请求的 body 部分为文本

WebForms | 显示请求的 GET 参数 和 POST body 内容

HexView | 用十六进制数据显示请求

Auth | 显示响应 header 中的 Proxy-Authorization(代理身份验证) 和 Authorization(授权) 信息

Raw  | 将整个请求显示为纯文本

JSON | 显示JSON格式文件

XML | 如果请求的 body 是 XML格式,就是用分级的 XML 树来显示它

响应 (Response) 部分详解

Transformer | 显示响应的编码信息

Headers | 用分级视图显示响应的 header

TextView | 使用文本显示相应的 body

ImageVies | 如果请求是图片资源,显示响应的图片

HexView | 用十六进制数据显示响应

WebView | 响应在 Web 浏览器中的预览效果

Auth | 显示响应 header 中的 Proxy-Authorization(代理身份验证) 和 Authorization(授权) 信息

Caching | 显示此请求的缓存信息

Privacy | 显示此请求的私密 (P3P) 信息

Raw | 将整个响应显示为纯文本

JSON | 显示JSON格式文件

XML | 如果响应的 body 是 XML 格式,就是用分级的 XML 树来显示它

文章来源于互联网:一、爬虫的基本介绍

发表评论