Python爬虫学习笔记 1-1:什么是爬虫
Published On 2019/08/11 Sunday, Singapore
本节从以下三点来全面介绍爬虫:1 爬虫的定义和应用场景 2 爬虫基本知识 3 爬虫协议。
本文为Datacatsle Python爬虫(入门+进阶)课程学习笔记。
爬虫的定义和应用场景
网络爬虫是一种按照一定的规则,自动地抓取网页信息的程序或者脚本。互联网上有30%的流量为来自爬虫的流量。常见的爬虫应用场景:
- 搜索引擎,比如百度和谷歌
- 今日头条
- App annie: App store 应用市场分析工具
- 新榜: 公众号分析应用
- 舆情监控应用
这些应用场景可以归纳为以下三种类型:
- 市场分析:电商分析、商圈分析、一二级市场分析等
- 电商分析: 淘宝卖路由器的商家,了解路由器品类的竞争情况。抓取淘宝上路由器的平均价格,消费者的评论。
- 商圈分析: 抓取点评网数据,这附近主要的商店的类型,分布和客单量。
- 一二级市场: 一级市场股权投资。抓取IT桔子上的数据实现二级市场的背景调查。
- 市场监控:电商、新闻、房源监控等
- 商机发现:招投标情报发现、客户资料发掘、企业客户发现等
爬虫基本知识
网址构成。一个网站的网址一般由域名+子页面所构成。在访问同一网站的不同网页时,域名一般是不会改变的,因此爬虫所需要解析是需要爬取页面的入口url,只有解析出来各个页面的入口,才能开始我们的爬虫。
网页加载方法。同步加载:改变网址上的某些参数会导致网页发生改变,例如豆瓣读书评论。 异步加载:改变网址上的参数不会使网页发生改变,例如拉钩网。只有同步加载的数据才能直接在网页源代码中直接查看到,而异步加载的数据无法在网页源代码中直接查看。
网页源码的构成。 在网页中右键点击查看网页源码,可以查看到网页的源代码信息。 源代码一般由三个部分组成,分别是:
- html:描述网页的内容结构
- css:描述网页的排版布局
- JavaScript:描述网页的事件处理,即鼠标或键盘在网页元素上的动作后的程序
查看网页请求。以Chrome浏览器为例,在网页上点击鼠标右键,检查(或者直接F12),选择Network,刷新页面,选择All下面的第一个链接,这样就可以看到网页的各种请求信息。
- 请求头(Request Headers)信息详解:
Accept: text/html,image/*(浏览器可以接收的类型) Accept-Charset: ISO-8859-1(浏览器可以接收的编码类型) Accept-Encoding: gzip,compress(浏览器可以接收压缩编码类型) Accept-Language: en-us,zh-cn(浏览器可以接收的语言和国家类型) Host: www.it315.org:80(浏览器请求的主机和端口) If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT(某个页面缓存时间) Referer: http://www.it315.org/index.jsp(请求来自于哪个页面) User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)(浏览器相关信息) Cookie:(浏览器暂存服务器发送的信息) Connection: close(1.0)/Keep-Alive(1.1)(HTTP请求的版本的特点) Date: Tue, 11 Jul 2000 18:23:51 GMT(请求网站的时间)
- 响应头(Response Headers)信息详解:
Location: http://www.it315.org/index.jsp(控制浏览器显示哪个页面) Server:apache tomcat(服务器的类型) Content-Encoding: gzip(服务器发送的压缩编码方式) Content-Length: 80(服务器发送显示的字节码长度) Content-Language: zh-cn(服务器发送内容的语言和国家名) Content-Type: image/jpeg; charset=UTF-8(服务器发送内容的类型和编码类型) Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT(服务器最后一次修改的时间) Refresh: 1;url=http://www.it315.org(控制浏览器1秒钟后转发URL所指向的页面) Content-Disposition: attachment; filename=aaa.jpg(服务器控制浏览器发下载方式打开文件) Transfer-Encoding: chunked(服务器分块传递数据到客户端) Set-Cookie:SS=Q0=5Lb_nQ; path=/search(服务器发送Cookie相关的信息) Expires: -1(服务器控制浏览器不要缓存网页,默认是缓存) Cache-Control: no-cache(服务器控制浏览器不要缓存网页) Pragma: no-cache(服务器控制浏览器不要缓存网页) Connection: close/Keep-Alive(HTTP请求的版本的特点) Date: Tue, 11 Jul 2000 18:23:51 GMT(响应网站的时间)
网页请求过程。 从浏览器输入网址、回车后,到用户看到网页内容,经过的步骤如下:1)DNS解析,获取IP地址;2)建立TCP连接,3次握手;3)发送HTTP请求报文;4)服务器接收请求并作处理;5)服务器发送HTTP响应报文;6)断开TCP连接,4次握手。
爬虫协议
什么是爬虫协议:爬虫协议,也被叫做robots协议,用以申明哪些页面可以抓取,哪些页面不能抓取。
如何查看爬虫协议:在访问网站域名后加上robots.txt即可,例如查看百度网站的爬虫协议:https://www.baidu.com/robots.txt
爬虫协议样例:
拦截所有的机器人:
User-agent: *
Disallow: /
允许所有的机器人:
User-agent: *
Disallow:
爬虫建议
- 爬取互联网公开数据
- 尽量放慢你的速度
- 尽量遵循robots协议
- 不要用于商业用途
- 不要公布爬虫程序与数据
为什么使用python爬虫?
python适合做爬虫的原因
- 语言本身简单,适合敏捷开发
- 有比较完善的工具链
- 足够灵活,以应对各种突然状况