爬虫的概念
- 模拟浏览器 发送请求 获取响应
爬虫的分类
- 通用爬虫 通常指搜索引擎的爬虫
- 聚焦爬虫
爬虫的流程
1. url/url_list
2. 发送请求获取响应
3. 对响应内容进行提取
a. 提取数据,处理或保存
b. 提取url,重复步骤2
HTTP和HTTPS的复习
1. http和https的概念
http 超文本 传输 协议 80端口
HTTPS http+ssl(安全套接字层) 带有安全套接字层的超文本传输协议 433端口
HTTPS比HTTP更安全,但是性能更低
2. 重点理解
浏览器最终展示的结果是多次响应共同渲染的结果,意味着有多次请求被发送出去
爬虫提取数据应该以url对应的响应为准
3. 爬虫重点关注的请求头
User-Agent
Referer 面包屑
Cookie
4. 爬虫重点关注的响应头
Set-Cookie
# 浏览器最多只能保存一个域名下的20条cookie
5. 常见响应状态码
200 请求成功
302 307 被临时跳转到新的url
404 找不到页面
500 内部服务器错误 503 一般是被反爬了 服务不可用
字符串相关的复习
字符集:多个字符集合在以起(utf-8)
UTF-8是Unicode的实现方式之一
ascii gbk gb2312 iso-8859-1 utf8
str --> bytes encode()
bytes --> str decode('utf8')
# 编码方式解码方式必须一样,否则就会出现乱码
requests模块的入门使用
requests的底层实现是基于urllib
# 发送请求 获取响应
1. requests模块发送简单的get请求、获取响应
response = requests.get(url)
-
response响应对象常用属性
response.url
response.status_coderesponse.headers
response.request.headersresponse.cookies
response.request._cookiesresponse.text # str
response.content # bytes
response.content.decode() # 尝试传入不同的字符集
3. 获取图片保存到本地
1. 确定url
2. 发送请求获取响应
3. 保存图片
图片的格式
打开文件的方式:图片一类的流媒体必须以bytes类型保存!
4. 发送带header的请求
requests.get(url, headers={})
5. 发送带参数的请求
requests.get(url, params={}, headers={})