求助,request传参数遇到这个问题,java.lang.NullPointerException,该怎么办
问题:
参考资料:
段落0: 案例1:直接解析
# coding=utf-8
import requests
import csv
if __name__ == "__main__":
post_url = 'https://movie.douban.com/j/chart/top_list'
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.40'
}
param = {
'type': '13',
'interval_id': '100:90',
'action':'',
'start': 0, #从第几部电影开始去取
'limit': 250, #一次取多少个
}
reps = requests.get(url=post_url,params=param,headers=headers)
list_data = reps.json()
#创建空字典存储爬取数据
dic = {}
#创建csv文件存储
f = open("DouBanData.csv", mode='w', newline='')
csvwriter = csv.writer(f)
#for循环从列表中提取字典的键值
for dicnum in list_data:
dic['排名'] = dicnum['rank']
dic['电影名'] = dicnum['title']
dic['上映时间'] = dicnum['release_date']
dic['评论数'] = dicnum['vote_count']
dic['评分'] = dicnum['score']
#print(dic)
csvwriter.writerow(dic.values())
f.close()
print('----over!!------')
段落1: 案例2:正则表达式
import requests
import re
import csv
if __name__ == "__main__":
header = {
"User-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.40"
}
url = "https://movie.douban.com/top250"
#通过循环控制start参数信息,来获取不同页面的电影信息
for num in range(0,256,25):
data = {
'start': num,
'filter': '',
}
resp = requests.get(url=url,params=data,headers=header)
page_content = resp.text
#解析数据
obj = re.compile(r'<li>.*?<div class="item">.*?<em class="">(?P<rank>.*?)</em>'
r'.*?<div class="info">.*?<div class="hd">.*?<a href="(?P<website>.*?)" class="">'
r'.*?<span class="title">(?P<name>.*?)</span>'
r'.*?<div class="bd">.*?<br>.*?(?P<year>.*?) '
r'.*?</span>.*?<span class="rating_num" property="v:average">(?P<score>.*?)</span>'
r'.*?<span>(?P<num>.*?)</span>',re.S)
result = obj.finditer(page_content)
f = open("movieTop250_Data.csv", mode='a+', newline='')
csvwriter = csv.writer(f)
dic = {}
for it in result:
#字典存储数据,scv文件是以,分割,方便后面进行数据分析
dic = it.groupdict()
dic['year'] = dic['year'].strip()
csvwriter.writerow(dic.values())
f.close()
print("---------over!!!----------")
解决方案:
根据问题描述,目前无法得知具体的问题是什么,因此无法给出具体的解决方案,只能根据提供的参考资料给出以上的解释和代码分析。请重新提供具体问题的描述,以便给出相应的解决方案。
有参数是none
每一步要做非空判断,不要默认一定都能得到数据
空指针了呗,具体看报错是哪一行代码,没获取到值或者代码有问题
这是对方接口抛出来的异常,异常为空指针异常,有可能是你传的参数有问题,导致对方后续处理产生了空指针异常。检查下需要传递的必传参数,看是否有漏传。一般接口文档会标注出哪些参数是必填,哪些是选填。
引用了一个空对象或者空引用。
代码如下
实在不行就selenium吧
您可以截个报错“全图”么?从报错信息能不能看到更提示?
正如答主们所说,您的代码中出现了对Null的引用,python 中可能是空字符''、空None、或者空序列(如[]、(,)、range(0, -1)、{}等)。
在多线程应用中,有些线程可能会修改或清空对象或集合,而其他线程仍在使用这些对象或集合,从而导致 NullPointerException 错误。
类路径不正确:当类路径不正确时,Java 可能无法正确加载类。这可能会导致 NullPointerException 错误。
综上所述,最常见的原因是对象未被正确初始化或者有 null 值的参数、数组或集合。因此,开发人员需要避免这些情况并进行适当的错误处理。
解决方案:
综上所述,避免空引用是解决java.lang.NullPointerException错误的最有效方法。