1.什么是爬虫?
就是一短自动获取互联网数据的程序
2.爬虫有什么用途?
搜索引擎
比价工具(慧慧1购物助手)
大的咨询网站(jobbole,今日头条)
网站的三大特性:
1.每一个资源都一个url(统一资源定位符),是唯一的
2.网页都是使用html(超文本)文本展示数据的
3.通过http/https(超文本传输协议),获取和传输html
3.如何实现一个爬虫
(1):找到目标url
(2):根据url发起请求
(3):解析响应结果:
(a):提取目标数据
(b):如何存在新的url,进一步提取(会执行1-3这个循环)
(4):爬虫结束:所有符合条件的url请求全部获取完毕,意味着爬虫结束
4.为什么要使用python做爬虫?
PHP,java,c/c++,python....
PHP:可以用来做爬虫,但是对多任务的支持不太好,爬虫始对像驴要求比较高的,所以说PHP天生不是干这个事情的
JAVA:生态圈很完善,并且用途非常广泛(后端,移动端..),java做爬虫是python最大的竞争对手,但是java代码量比较大,
重构的成本比较高
c/c++:肯定是可以完全爬虫这件事的,并且完成的效率是非常高的,但是它学习的门槛是非常高的,
各个模块可能需要你自己封装和定制(能使用c/c++的人一般比较牛逼)
python:语法简介,代码优美,可读性高,并且对各模块的支持比较好,有很多强大的三方包,对多任务的处理也比较好,
urllib,requests都能够很好的帮助我们实现一个爬虫项目,解析的库也非常多(lxml,bs4,pyquery..),
.并且python作为一门交互语言,对于其他语言的调度也是非常方便的
爬虫分为两类:
通用爬虫:通用爬虫是浏览器的重要组成部分,将互联网上所有网页下载到本地,
做了一个镜像备份,提取重要数据(过滤数据,分词,取广告等等)
步骤其实跟上面介绍的类似
聚焦爬虫:是面向主题的爬虫,由需求产生的,是一种定向的爬虫,在爬取网页数据的时候,会对网页数据进行一些赛选,
保证之抓取和需求相关的数据,以后我们更多的就是实现聚焦爬虫
搜索引擎的爬取的url通过什么方式获取的??
1.通过网站的外链
2.通过网页提交url:(百度的链接:)
3.各大搜索引擎公司也会和DNS服务商合作(DNS:将我们的域名转换为ip的一种技术)
通用爬虫的缺点:
1.需要遵循robot协议(也称为爬虫协议、机器人协议等)的全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。)
2.搜索引擎返回的结果千篇一律没有很好的针对性,不能够特殊的用户群体返回对应的数据
3.搜索引擎一般情况下获取的是文本信息,处理图像,音频,视频多媒体还是有困难的。
做爬虫需要掌握哪些基本知识
1.python的基本语法
2.前端知识
3.数据持久化的知识
4.了解基本的反爬虫的手段(header请求头,验证码,cookies,代理)
5.静态页面和动态页面(ajax,js),selenium(获取的页面源码是经过浏览器渲染后的最终结果)
6.多任务处理,爬虫框架,分布式爬虫等等
HTTP:超文本传输协议,主要使用来将html文件传输到本地浏览器
HTTPS:作用和HTTP一致,只是多了SSL(安全套接字层),保证数据传输的安全性
1.建立一个安全有效的数据传输通道,保证数聚的安全性
2.保证网站的真实性和有效性
url的组成部分:
1.scheme:协议
2.host:指的是域或者IP
3.post:端口
4.path:资源路径
5.query-string:请求参数
6.anchor:瞄点,主要是实现页面的
请求头:
User-Agent:模拟浏览器加载
Cookies:携带cookies第一可以维持会话,告诉浏览器用户的身份信息
Refere:告诉浏览器,当前请求,是从哪个页面发起,
常见状态码:
2xx:表示服务器成功接收请求并已完成整个处理过程。
200(OK 请求成功)。
3xx:为完成请求,客户需进一步细化请求。例如:请求的资源已经移动一个新地址、 常用
301: 永久重定向
302:临时重定向(所请求的页面已经临时转移至新的url)
4xx:客户端的请求有错误.
400:错误请求,服务器无法解析请求
401:未授权,没有进行身份验证
403:服务器拒绝访问
404:服务器无法找到被请求的网页
408:请求超时
5xx:服务器端出现错误
500:服务器内部错误
501:服务器不具备完成请求的功能
503:服务器不可用