目录
1. 对文本内容的爬取
今天,我们对 https://ssr1.scrape.center/ 该网站进行爬取
目标:爬取第一页的电影名称(10个电影)
import requests
import re
response = requests.get('https://ssr1.scrape.center/')
# 请求时是否返回 200 状态码
response.raise_for_status()
# 对返回的内容编码做出处理,一般为 utf-8 格式
response.encoding = response.apparent_encoding
pattern = re.compile('<h2.*?>(.*?)</h2>', re.S)
titles = re.findall(pattern, response.text)
print(titles)
print("爬取电影数: ", len(titles))
对网页请求 : request.get(url地址)
对数据进行清洗——采取 re 模块
根据 html 代码分析:
我们可以设置 pattern 为 <h2 ....> 我们要爬取的内容 </h2>
根据上面的 推理,我们可以做出判断
<h2.*?>(.*?)</h2>
其中 (.*?) 就是我们要爬取的电影标题 而前面的.*?是 data-v-7f..... 一长串内容的匹配
细心的可以发现 re.compile() 中还有一个 re.S
对于 re.S 就是可以多行去匹配 (.*?)
好了,我们来看爬取的结果吧!
2.对二进制资源的爬取【图片、音频等】
对于 文本内容 我们可以通过 requests 模块爬取了!那么图片、音频、视频等文件如何进行爬取?这时就要提到 response.content 二进制数据
实战操作:爬取一个网站的 ico 图标,并下载到本地
如果对 文本内容的爬取 已经了解或者掌握了 ,其实对二进制也就是从 r.text 改为 r.content
import requests
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 "
"Safari/537.36 "
}
r = requests.get('https://static.zhihu.com/heifetz/favicon.ico', headers=headers)
r.raise_for_status()
r.encoding = r.apparent_encoding
# 二进制数据
print(r.content)
# 下载到本地
with open('zhihu-ico.ico','wb') as file:
file.write(r.content)
print("下载完毕!")
在代码中,我添加进了 user-agent ,为什么要进行添加?—— 模拟浏览器进行请求网页
如何获取 user-agent ?
打开 f12 工具 ,找到 网络 - 点击任意一个请求,请求标头就有 user-agent
最简单获取 user-agent 的方法,就是百度搜索 各个浏览器的 user-agent
打开 zhihu-ico.ico 文件,我们就可以看到我们已经下载好的 知乎图标
拓展小知识:
我们可以通过修改 url 地址,去下载各个网站的 ico 图标【前提是要有这个资源哈~】
通过图中,红色框框圈出来的部分,就是可以修改的地方。
不仅仅是图标资源的下载,对于其他二进制资源【音频、视频】,同样适用!