#### 为什么写这篇博客
因为要做Android的课程设计,我做了一个简单的音乐播放软件,为了有更多的数据放入到服务器端,所以我就简单学习了一下,python的requests库如何爬取网络上的资源。
###### 整个学习下来,现在的认识就是,爬取网络资源,我们无非就是从网页上获取到需要的网络资源的URL,或者复杂一点,根据一些浏览器的操作,查看更复杂的数据,然后找到这个URL。有了URL,我们很简单的就可以使用requests获取到资源
#### 正文
##### 导入:
# 导入
import requests
##### 根据URL获取到资源
headers = {
"Referer": "http://www.6002255.com",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.0.0",
"X-Requested-With": "XMLHttpRequest"
}
post_form = {
"input": "青花瓷 周杰伦",
"filter": "name",
"type": "netease",
"page": 0
}
result = requests.get(
url=url,
headers=headers
)
# 或者你想向服务器发送post请求
result = requests.post(
url=url,
data=post_form,
headers=headers
)
# 甚至是发送一些json数据(可能会有一些小问题,可以自行查阅别的博客解决)
import json
result = requests.post(
url=url,
json=json.dumps(post_form),
headers=headers
)
明显,我们就需要一个URL和一个headers,这个headers你可以直接从你当前想要爬取的网页上获取到,例如:
而POST请求需要的那个数据,其实就是个key-value形式的字典数据,这种请求,我认为应该是用在,你无法直接获取到资源的URL时,想要通过模仿网站取请求一些数据,然后获取到资源的URL的。
所以,最终要的依然是资源的URL。
而有了资源的URL,我们一个GET请求就可以拿到数据。
##### 请求的返回
现在,我们已经有了请求得到的返回值了result,这个result有几个属性,可以让我们获取到我们想要的数据。
先了解一点:网站返回的数据有几种类型:网页、二进制数据(例如:音乐、图片)、json数据(我就知道这么多哈)
- 获取html网页文件
text = result.text
获取html网页,一般是为了利用正则表达式,从网页上获取某种信息(像一些资源的URL就在html网页文件中)。
- 获取二进制数据
data = result.content
with open("文件名.后缀", 'wb') as fp:
fp.write(data)
这样我们就可以轻松的保存我想要的音乐和图片了。
- json数据
json_data = result.json()
这里得到的就是一个字典(我这次就是先通过查看网站的js的文件,找到了网页请求一些数据的ajax请求,然后我模仿着发出请求,然后获取到了包含着我想要的资源的URL的一个json数据)。
##### 好了,到这里基本就记录了这次使用requests爬取音乐资源的过程了。至于,爬取到的数据如何处理,如何批量爬取资源就看你自己的编程能力了哦!