爬虫第一天
学习目标
- 记忆 爬虫流程
- 记忆 浏览器发送http请求的过程
- 记忆 HTTP请求头的形式
- 能够说明 str , bytes以及互相转换
- 能够说明 requests的基本使用,以及Response对象
- 能够说明 requests.text和requests.content的区别
- 能够说明 requests模块发送带headers的请求
- 能够说明 requests模块发送带参数的get请求
爬虫的概念
爬虫就是模拟客户端发送网络请求,接受请求对应的响应。
爬虫与反爬虫之间的战争:资源同等 爬虫胜利
爬虫的分类
- 通用爬虫(搜索引擎)
- 聚焦爬虫(针对特定网站的爬虫)
爬虫流程
浏览器发送HTTP请求的过程
HTTP请求头的形式
HTTP请求头是由键值对组成的,每行一对,键与值用英文冒号":"分隔
HTTP常见请求头
- Host(主机和端口号)
- Connection(链接类型)
- Upgrade-Insecure-Requests(升级为HTTPS请求)
- User-Agent(用户代理)
- Accept(传送文件类型)
str , bytes以及互相转换
python3中有两种字符串类型:
- str : unicode的呈现形式
- bytes : 字节类型,互联网上数据都是以二进制的方式(字节类型)传输的
使用方法:
- str 使用encode(编码)方法转化为 bytes
- bytes 使用decode(解码)方法转化为 str
requests的基本使用,以及Response对象
调用reqests库
import requests
使用requests发送get请求
res = requests.get(url) # res为一个response对象
response的常用属性
属性 | 说明 |
---|---|
res.text | 以字符串形式,获取数据 |
res.content | 以二进制形式,获取数据 |
res.status_code | 获取请求状态码 |
res.request.headers | 获得请求头 |
res.headers | 获得响应头 |
response.text 和response.content的区别
response.text | response.content | |
---|---|---|
类型 | str | bytes |
解码类型 | 根据HTTP 头部对响应的编码作出有根据的推测,推测的文本编码 | 没有指定 |
如何修改编码方式 | response.encoding=”gbk” | response.content.deocde(“utf8”) |
获取网页源码的通用方式(从前往后尝试,能100%的解决所有网页编码问题):
1. response.content.decode()
2. response.content.decode("GBK")
3. response.text
requests模块发送带headers的请求
为什么请求需要带上headers?
模拟浏览器,诈骗服务器获取和浏览器一致的内容
- headers的形式:字典
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}
用法
requests.get(url,headers=headers)
requests模块发送带参数的get请求
参数的形式:字典
kw = {'wd' : 'python'}
用法
requests.get(url, params = kw)