day10 爬虫导言
爬虫(网络数据采集)
-
定义:按照程序猿自己的想法编写程序批量的爬取数据(图片、音频、视频、数据等)
-
爬虫的流程:
- 解析HTML页面
- 根据前端的语法,或者正则表达式来提取数据
- 保存数据
#爬虫只能爬网页吗?
-
requests、urllib、selenium、playwariter等
-
requests:通过网址向服务器发送请求,等待服务器的响应结果
-
疑问: 1.爬虫只能爬网页吗?2.从网页上能爬到什么东西?3.爬虫能给到什么东西,技术边界在哪?
具体的爬虫流程
- 向网页发送请求 --> 使用requests.get(url = ‘’)
- 查看页面状态 --> 使用response.status_code
- response.text查看是否乱码 --> response.text - 肉眼查看有没有看不懂的 -response.encoding = ‘gbk’
- 未完待续
import requests
# 1. 发送网页读取请求
URL = 'https://pvp.qq.com/web201706/index.shtml'
#返回了一个响应对象,所有东西都在里面
response = requests.get(url=URL)
print(response)
# 1. 页面状态
# 1.查看状态码
print(response.status_code)
# status_code :状态码 --> 判断服务器和网页状态,以防服务器是崩的(404)
# 200:表示程序和服务器正常通信
# 403:表示服务器理解客户端的请求,但是拒绝了客户端的请求。(没崩但拒绝了)
# 404:网页丢失
# 500:服务器崩溃
# 2. 查看页面源代码
# 网页出现乱码: 如果网页发生乱码,只需要根据页面指定的编码方式解码即可(不用ASCII解码)
# 如何查找解码方式: 在返回的response.text里,用command+f,查找'charset';如果没有charset:response.encoding = None
# requests默认使用ISO-8858-1的编码(即ASCII),也能使用页面服务器所指定的解码方式
# 常用:ASCII 和 gbk(国标码,我国自主指定的编码方式,可识别中文)
response.encoding = 'gbk'
# 2.1 text 查看页面源代码(字符串类型):
print(response.text, type(response.text))
# 2.2 content:页面源代码(二进制):
# b'......' --> 二进制一般用于图片音频视频
# print(response.contant)
网页图片/视频爬取
import requests
URL = 'https://video.pearvideo.com/mp4/adshort/20220614/cont-1765337-15895934_adpkg-ad_hd.mp4'
response = requests.get(url = URL)
if response.status_code == 200 :
print(response.content) # 使用二进制查看页面源码
#拿到二进制格式的文件 ,写入本地文件
video = open('1.mp4', 'wb') # 在本地先建立一个文件,注意格式要和你要保存下来的文件格式保持一致。注意是‘wb’
video.write(response.content) # 直接用write写入本地文件
video.close()
else :
print(response.status_code)
#爬取视频/照片流程:
#1. 先获得图片/视频地址。
#2. 检查网页状态。
#3. 把二进制读取出来的文件,写入本地文件