鱼C论坛

 找回密码
 立即注册
查看: 2072|回复: 11

[已解决]爬虫中json格式问题求助

[复制链接]
发表于 2020-8-30 18:36:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
今天写一个爬虫小程序,碰到的网站返回值是一组json数据,可是怎么都解析不出来。问一下大佬们错在哪里呢?
我的部分代码如下:
response = requests.post(url,headers,data)
result = response.json()
print(response.status_code,'响应成功')
print(result)

报错是这样的:
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

通过抓包工具看返回值确实是一组json数据,头疼。。。。
最佳答案
2020-8-30 19:02:09
狗宁 发表于 2020-8-30 18:46
可是通过谷歌的工具看确实是json数据,要是被反爬的话 请问一下有什么解决办法吗?
import requests
from lxml import etree
import json

# music_name = input("请输入想要下载的名称:")
url = 'http://www.eggvod.cn/music/'
data = {
'input': '青花瓷',
'filter': 'name',
'type': 'netease',
'page': '1'
}
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36',
    'Host': 'www.eggvod.cn',
    'Origin': 'http://www.eggvod.cn',
    'Referer': 'http://www.eggvod.cn/music/?name=%E9%9D%92%E8%8A%B1%E7%93%B7&type=netease',
    'Accept': 'application/json, text/javascript, */*; q=0.01',
    'X-Requested-With': 'XMLHttpRequest'
}
response = requests.post(url,data,headers=headers)
result = response.json()
print(response.status_code,'响应成功')
print(result)
一个爬第三方音乐下载网站的小爬虫
已改好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-30 18:36:57 | 显示全部楼层
本帖最后由 1q23w31 于 2020-8-30 18:38 编辑

发完整代码看看,这样看只能看出你得到的不是json类型
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-30 18:39:00 | 显示全部楼层
1q23w31 发表于 2020-8-30 18:36
发完整代码看看,这样看只能看出你得到的不是json类型
import requests
from lxml import etree
import json

# music_name = input("请输入想要下载的名称:")
url = 'http://www.eggvod.cn/music/'
data = {
'input': '青花瓷',
'filter': 'name',
'type': 'netease',
'page': '1'
}
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36',
}
response = requests.post(url,headers,data)
result = response.json()
print(response.status_code,'响应成功')
print(result)
一个爬第三方音乐下载网站的小爬虫
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-30 18:41:46 | 显示全部楼层
本帖最后由 1q23w31 于 2020-8-30 18:46 编辑


2020-8-30 18-40-47.png
经验证,得到的确实不是json,被反爬了,应该是请求头的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-30 18:46:33 | 显示全部楼层
可是通过谷歌的工具看确实是json数据,要是被反爬的话 请问一下有什么解决办法吗?
]3SA98HI]I~$R2%BJ6@DW0A.png
II@{X4GADEY`J1_A2LVQ`J9.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-30 19:02:09 | 显示全部楼层    本楼为最佳答案   
狗宁 发表于 2020-8-30 18:46
可是通过谷歌的工具看确实是json数据,要是被反爬的话 请问一下有什么解决办法吗?
import requests
from lxml import etree
import json

# music_name = input("请输入想要下载的名称:")
url = 'http://www.eggvod.cn/music/'
data = {
'input': '青花瓷',
'filter': 'name',
'type': 'netease',
'page': '1'
}
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36',
    'Host': 'www.eggvod.cn',
    'Origin': 'http://www.eggvod.cn',
    'Referer': 'http://www.eggvod.cn/music/?name=%E9%9D%92%E8%8A%B1%E7%93%B7&type=netease',
    'Accept': 'application/json, text/javascript, */*; q=0.01',
    'X-Requested-With': 'XMLHttpRequest'
}
response = requests.post(url,data,headers=headers)
result = response.json()
print(response.status_code,'响应成功')
print(result)
一个爬第三方音乐下载网站的小爬虫
已改好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-30 19:22:28 | 显示全部楼层

谢谢大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-30 20:35:09 | 显示全部楼层

为什么改了headers里面这些,就能读取了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-30 20:42:13 | 显示全部楼层
疾风怪盗 发表于 2020-8-30 20:35
为什么改了headers里面这些,就能读取了?

网站通过headers中的字段来判断你是否为爬虫,常见的反爬措施
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-30 20:44:26 | 显示全部楼层
1q23w31 发表于 2020-8-30 20:42
网站通过headers中的字段来判断你是否为爬虫,常见的反爬措施

所以?多加几个字段?
还是有哪个字段是特殊的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-30 20:52:58 | 显示全部楼层
疾风怪盗 发表于 2020-8-30 20:44
所以?多加几个字段?
还是有哪个字段是特殊的?

这个加什么字段,只能尝试,网站规定的,一般来说 refer host x-requests-with origin是常用的,但不排除有其他字段
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-30 21:02:39 | 显示全部楼层
1q23w31 发表于 2020-8-30 20:52
这个加什么字段,只能尝试,网站规定的,一般来说 refer host x-requests-with origin是常用的,但不排除 ...

好的,谢谢解答
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-19 03:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表