爬虫初级一
什么是爬虫
网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟客户端(主要指浏览器)发送网络请求,接收请求响应,按照一定的规则,自动地抓取互联网信息的程序。原则上,只要是客户端(主要指浏览器)能做的事情,爬虫都能够做。
爬虫的用途
数据采集、软件测试、爬虫之自动化测试、12306抢票、网站上的投票、短信轰炸、web漏洞扫描
准备基础知识
http工作原理
-
url的组成 :协议、主机、端口号、路径、参数、锚点。
协议 :http/https
主机: www.xxx.com (host)
端口号:80
路径:xxx.html
参数:?name=xxx
锚点:#xxx (作用为)
http//www.baidu.com:80/index.html?name=xxx&password=123#3-1
http 和 https 区别:
- HTTP超文本传输协议,默认端口:80
- HTTPS:HTTP + SSL(安全套接字层),即带有安全套接字层的超本文传输协议,默认端口号:443
- HTTPS比HTTP更安全,但是性能更低
http请求的过程
浏览器先向地址栏中的url发起请求,并获取响应,在返回的响应内容(html)中,会带有css、js、图片等url地址,以及ajax代码,浏览器按照响应内容中的顺序依次发送其他的请求,并获取相应的响应
浏览器每获取一个响应就对展示出的结果进行添加(加载),js,css等内容会修改页面的内容,js也可以重新发送请求,获取响应
从获取第一个响应并在浏览器中展示,直到最终获取全部响应,并在展示的结果中添加内容或修改————这个过程叫做浏览器的渲染
注意:
在爬虫中,爬虫只会请求url地址,获得url地址对应的响应(该响应的内容可以是html,css,js,图片等)
浏览器渲染出来的页面和爬虫请求的页面很多时候并不一样,所以在爬虫中,需要以url地址对应的响应为准来进行数据的提取
HTTP常见请求头
Host (主机和端口号)
Connection (链接类型)
Upgrade-Insecure-Requests (升级为HTTPS请求)
User-Agent (浏览器名称)
Accept (传输文件类型)
Referer (页面跳转处)
Accept-Encoding(文件编解码格式)
Cookie (Cookie)
x-requested-with :XMLHttpRequest (表示该请求是Ajax异步请求)
HTTP重要的响应头
Set-Cookie (对方服务器设置cookie到用户浏览器的缓存)
Last-Modified (对方静态页面最后更新时间)
响应状态码(status code)
常见的状态码:
200:成功
302:临时转移至新的url
307:临时转移至新的url
404:找不到该页面
500:服务器内部错误
503:服务不可用
所有的状态码都不可信,一切以是否获取到数据为准
爬虫分类
通用爬虫、聚焦爬虫
爬虫的流程
向起始url发送请求,并获取响应、对响应进行提取,如果提取url,则继续发送请求获取响应,如果提取数据,则将数据进行保存