[爬虫02]request的使用

目录

1. 对文本内容的爬取 

2.对二进制资源的爬取【图片、音频等】 


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 就是可以多行去匹配 (.*?)

参考文章:关于Python中正则表达式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 图标【前提是要有这个资源哈~】

 通过图中,红色框框圈出来的部分,就是可以修改的地方。

不仅仅是图标资源的下载,对于其他二进制资源【音频、视频】,同样适用!

 

posted @ 2023-03-18 17:36  辰梦starDream  阅读(10)  评论(0编辑  收藏  举报  来源