- 爬虫的工作原理
(1) 获取数据
打开网站:爬虫-寻找网站服务器 > 请求 > 服务器-返回网站内容 > 响应 > 爬虫
(2) 爬虫-处理数据
(3) 爬虫-存储数据
- requests获取数据
1)请求 > 服务器 > 2)响应 > res=requests.get('网站地址')
> 3)将响应结果存到变量res中
- response对象的常用属性
res.status_code 响应的http状态码
res.text 响应内容的字符串形式
res.content 响应内容的二进制形式
res.encoding 响应内容的编码,常见的编码方式有 ASCII、GBK、UTF-8
res.text
用于文本内容的获取、下载。
res.content
用于图片、音频、视频等二进制内容的获取、下载。
- 常见响应状态码
响应状态码 | 含义 | 例子 | 含义 |
---|---|---|---|
1xx | 消息 | 100 | 继续发出请求 |
2xx | 请求成功 | 200 | 请求成功 |
3xx | 重定向 | 301 | 永久重定向 |
4xx | 客户端错误 | 404 | 找不到资源 |
5xx | 服务端错误 | 503 | 服务不可用 |
- 文件操作
open()
函数,第一个参数为文件名,第二个参数为文件打开模式(r:只读,w:只写,a:追加,b:二进制)。
Tips:
在w和a模式下,如果打开的文件不存在,open()函数会自动创建一个。
rb、wb、ab 表示以二进制格式打开文件用于读取、写入、追加。
(1)普通写法
file = open('test.txt', 'w')
file.write('爬虫')
file.close()
&
(2)使用 with ... as ... 写法
with open('test.txt', 'w') as file:
file.write('爬虫')
- 爬虫下载一个小说——孔乙己
import requests
res = requests.get('https://apiv3.shanbay.com/codetime/articles/mnvdu')
with open('孔乙己.txt', 'w') as file:
file.write(res.text)
- 爬虫下载一张图片
import requests
res = requests.get('https://assets.baydn.com/baydn/public/codetime/xiaobei/info.jpg')
with open('info.jpg', 'wb') as file:
file.write(res.content)
- 爬虫解码编码
import requests
res = requests.get('https://www.baidu.com')
res.encoding = 'utf-8'
print(res.text)