关于爬虫的一个问题。。。
本帖最后由 兰竹皋 于 2020-10-9 19:11 编辑目的:想做一个直接从懒人全网音乐上下载音乐的爬虫
发现ajax数据包
数据包基本信息
数据包是 json 格式
请求 post 附加 data 数据
确定 json 数据
从而写下代码:
import requests
if __name__ == '__main__':
# name = input('请输入需下载音乐名称:')
station = ['netease', 'kugou']
download_by = station
url = 'http://www.eggvod.cn/music'
data = {
'input': '云烟成雨',
'filter': 'name',
'type': download_by,
'page': '2', # 每页10个数据
}
headers = {
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36"
}
re_json = requests.post(url=url, headers=headers, data=data).text
print(re_json)
但得到的 re_json 却不是 json 包内结果,而是原网站代码:
请问这是为什么?再者,改怎么作才能获得 json 数据包的地址?
谢谢各位。。。^_^ 本帖最后由 suchocolate 于 2020-10-9 19:40 编辑
import requests
if __name__ == '__main__':
url = 'http://www.eggvod.cn/music/'
station = ['netease', 'kugou']
download_by = station
data = {
'input': '云烟成雨',
'filter': 'name',
'type': download_by,
'page': '1' # 每页10个数据
}
params = {'input': '云烟成雨', 'type': download_by}
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36',
'X-requested-with': 'XMLHttpRequest'
}
# header得加 x头,看了实际url从data里抽了2个参数。
r = requests.post(url=url, headers=headers, data=data, params=params)
print(r.json()) suchocolate 发表于 2020-10-9 19:34
谢谢,单请问下,为什么有些ajax请求不需要加 x头同样可以得到 json结果?
是因为 content-type:一个是 application/json;一个是 text/json 中 text 有第二种选择吗? 兰竹皋 发表于 2020-10-9 20:07
谢谢,单请问下,为什么有些ajax请求不需要加 x头同样可以得到 json结果?
x头不是必须的,看网站。有的不加也能拿到,和数据类型无关。 suchocolate 发表于 2020-10-9 20:11
x头不是必须的,看网站。有的不加也能拿到,和数据类型无关。
谢谢了
^_^
页:
[1]