项目场景:
python关于爬取豆瓣电影排行榜的练习
问题描述:
数据传输过程中数据总是提示下方的错误
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
原因分析:
出现这类问题刚开始我也找了很多大佬发的文章,后来才发现竟然出现在这个位置
错误原代码:
import requests
import json
url = 'https://movie.douban.com/typerank'
#设置参数
param = {
'type': '24',
'interval_id': '100:90',
'action':'',
'start': '1', #从哪个位置开始取
'limit': '20' #一次取多少
}
#UA伪装
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36'
}
response = requests.get(url=url,params=param,headers=headers)
#获取响应数据
list_data = response.json()
#持久化存储
fp = open('./douban.json','w',encoding='utf-8')
json.dump(list_data,fp=fp,ensure_ascii=False)
运行提示:
软件一直提醒我是json数据在第一行第一列少了某种东西,反复查找后才弄清楚原来我犯了一个特别简单的错误。
python爬取网页一部分代码时,传入url的不再是网站的网址,而应该是network下的request URL内容。
解决方案:
方法如下:
以下高光部分需在写代码时着重了解,且传入url的网址为Request URL后面的内容,注意关注Request Method后方是GET还是POST请求哦
正确代码:
import requests
import json
url = ' https://movie.douban.com/j/chart/top_list'
#设置参数
param = {
'type': '24',
'interval_id': '100:90',
'action':'',
'start': '1', #从哪个位置开始取
'limit': '20' #一次取多少
}
#UA伪装
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36'
}
response = requests.get(url=url,params=param,headers=headers)
#获取响应数据
list_data = response.json()
#持久化存储
fp = open('./douban.json','w',encoding='utf-8')
json.dump(list_data,fp=fp,ensure_ascii=False)
好啦,学废了没