1、爬虫的概述
1.1 数据的来源
- 去第三方的公司购买数据(比如企查查)
- 去免费的数据网站下载数据(比如国家统计局)
- 通过爬虫爬取数据
- 人工收集数据(比如问卷调查)
- 收集的自己用户信息
1.2 爬取到的数据用途
- 进行在网页或者是app上进行展示
- 进行数据分析或者是机器学习相关的项目
1.3什么是爬虫
网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序。
1.4爬虫的用途
- 网络投票
- 12306抢票
- 新闻网站
2、爬虫的分类和爬虫的流程
2.1 爬虫的分类
根据被爬网站的数量的不同,我们把爬虫分为:
- 通用爬虫 :通常指搜索引擎的爬虫(https://www.baidu.com)
- 聚焦爬虫 :针对特定网站的爬虫
2.2爬虫的工作流程
- 向起始url发送请求,并获取响应
- 对响应进行提取
- 如果提取url,则继续发送请求获取响应
- 如果提取数据,则将数据进行保存
2.3 robots协议
Robots协议:网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取,但它仅仅是互联网中的一般约定。
例如:淘宝的robots协议(不能抓取某件商品的具体详情)
3、HTTP和HTTPS的学习
3.1 http和https的概念
- HTTP
超文本传输协议
默认端口号:80 - HTTPS
HTTP + SSL(安全套接字层),即带有安全套接字层的超本文传输协议
默认端口号:443
HTTPS比HTTP更安全,但是性能更低
3.2 http请求的过程
- 浏览器先向地址栏中的url发起请求,并获取响应
- 在返回的响应内容(html)中,会带有css、js、图片等url地址,以及ajax代码,浏览器按照响应内容中的顺序依次发送其他的请求,并获取相应的响应
- 浏览器每获取一个响应就对展示出的结果进行添加(加载),js,css等内容会修改页面的内容,js也可以重新发送请求,获取响应
- 从获取第一个响应并在浏览器中展示,直到最终获取全部响应,并在展示的结果中添加内容或修改————这个过程叫做浏览器的渲染
3.3 注意:
- 但是在爬虫中,爬虫只会请求url地址,拿到url地址对应的响应(该响应的内容可以是html,css,js,图片等),浏览器渲染出来的页面和爬虫请求的页面很多时候并不一样,所以在爬虫中,需要以url地址对应的响应为准来进行数据的提取。
3.4 HTTP常见请求头
- Host (主机和端口号)
- Connection (链接类型)
- Upgrade-Insecure-Requests (升级为HTTPS请求)
- User-Agent (浏览器名称) - Accept (传输文件类型)
- Referer (页面跳转处) - Accept-Encoding(文件编解码格式)
- Cookie (Cookie)
- x-requested-with :XMLHttpRequest (表示该请求是Ajax异步请求)
3.5 HTTP重要的响应头
- Set-Cookie (对方服务器设置cookie到用户浏览器的缓存)
- 在响应中可以set多次cookie,
- 客户端最多可以保存20条cookie
3.6 响应状态码(status code)
常见的状态码:
- 200:成功
- 302:临时转移至新的url
- 307:临时转移至新的url
- 404:找不到该页面
- 500:服务器内部错误
- 503:服务不可用,一般是被反爬
4、字符串的相关学习
4.1 字节和字符的含义
- “字节”是一个8位的物理存贮单元。
- “字符”是一个文化相关的符号。
- 一个汉字算两个英文字符
在UNICODE 中,一个字符就是两个字节
4.2 UTF
UNICODE 如何在网络上传输也是一个必须考虑的问题,于是面向传输的众多 UTF(UCS Transfer Format)标准出现了,顾名思义,UTF8就是每次8个位传输数据,而UTF16就是每次16个位,只不过为了传输时的可靠性,从UNICODE到UTF时并不是直接的对应,而是要过一些算法和规则来转换。
- UTF-8是Unicode的实现方式之一,UTF-8是它是一种变长的编码方式,可以是1,2,3个字节
4.3 字符和字符集
- 字符(Character) 是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。字符集(Character set)是多个字符的集合
- 字符集包括:ASCII字符集、GB2312字符集、GB18030字符集、Unicode字符集等
4.4 ascll 和 unicode
- "Ascii"编码(American Standard Code for Information Interchange,美国信息互换标准代码)。当时世界上所有的计算机都用同样的ASCII方案来保存英文文字。
- unicode编码:国际标准化组织(iso)为了编码在全世界通用,搞出了包括地球上所有文化、所有字母和符号的编码!他们打算叫它"Universal Multiple-Octet Coded Character Set",简称 UCS, 俗称 “UNICODE”。
- ASCII编码:是1个字节(半角),而Unicode编码通常是2个字节,支持显示英文。
5、 str和bytes类型的互相转换:
- str 使用encode方法转化为 bytes。
- bytes 通过decode转化为 str。
编码方式解码方式必须一样,否则就会出现乱码