如果目标资源(比如MP3)并不在HTML文档中,而是在网络请求中加载的,那么你可以使用Python的第三方库`requests`结合浏览器的开发者工具来模拟请求,从而获取到该资源。
首先,打开浏览器的开发者工具(一般是按F12键),然后切换到"Network"或"网络"选项卡。接下来,在浏览器中输入目标URL,并进行加载。在开发者工具的"Network"选项卡中,你能看到所有的网络请求,包括MP3资源。
找到目标请求,右键点击它,选择"Copy",然后选择"Copy as cURL"(在Chrome浏览器中)或者"Copy All as HAR"(在Firefox浏览器中)。这将复制请求的相关信息。
接下来,你可以使用Python的`requests`库来发送模拟请求,并获取到MP3资源的内容。下面是一个示例代码:
import requests
# 将复制的cURL命令粘贴到下面
curl_command = "curl 'https://music.163.com/song/media/outer/url?id=1900024768.mp3' -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' -H 'Accept: */*' -H 'Referer: https://music.163.com/song?id=1900024768' -H 'Accept-Language: en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7' --compressed"
# 将复制的cURL命令转换为等效的Python代码
session = requests.Session()
req = requests.Request()
prepped = req.prepare()
prepped.url = 'https://music.163.com/song/media/outer/url?id=1900024768.mp3'
prepped.headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
prepped.headers['Accept'] = '*/*'
prepped.headers['Referer'] = 'https://music.163.com/song?id=1900024768'
prepped.headers['Accept-Language'] = 'en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7'
response = session.send(prepped)
# 将获取到的MP3资源保存到文件
with open('song.mp3', 'wb') as f:
f.write(response.content)
print("MP3资源下载完成")
请注意,你需要将复制的cURL命令粘贴到代码中的`curl_command`变量。代码会将cURL命令自动转换为Python代码,并使用`requests`库发送请求获取MP3资源内容。最后,将资源保存到文件中。
希望这个示例能帮助你爬取网页中正在加载的MP3资源!记得遵守相关网站的规定和法律,以及避免对网站造成过大的访问压力。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |