已解决ValueError: dictionary update sequence element #0 has length 1; 2 is required
已解决ValueError: dictionary update sequence element #0 has length 1; 2 is required
报错问题
粉丝群里面的一个小伙伴,想用Python爬虫然后解析数据,但是发生了报错(当时他心里瞬间凉了一大截,跑来找我求助,然后顺利帮助他解决了,顺便记录一下希望可以帮助到更多遇到这个bug不会解决的小伙伴),报错代码如下所示:
def spider(page=1):
"""
:param page:
:return:
"""
url = "http://www.ceic.ac.cn/ajax/search?page={}&&start=2021-01-01&&end=2021-12-31&&jingdu1=&&jingdu2=&&weidu1=&&weidu2=&&height1=&&height2=&&zhenji1=&&zhenji2=&&callback=jQuery180008241254755365413_1671790451896&_=1671790540769".format(
page)
params = {}
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36"
}
resp = requests.get(url=url, params=params, headers=headers)
print(type(resp))
data = resp.content.decode("utf-8")
data = re.sub("jQuery180008241254755365413_1671790451896\(",'',data)
data = re.sub("\)$", '', data)
data = dict(data)
# data = resp.content.decode("utf-8").strip("(").strip(")")
print(data,type(data))
#
data1 = data['shuju'][0]
data_dic = json.loads(data1) # .get("shuju")
data_arr = []
for data in data_dic:
data_info = {
"M": data.get("M"),
"O_TIME": data.get("O_TIME"),
"EPI_LAT": data.get("EPI_LAT"),
"EPI_LON": data.get("EPI_LON"),
"EPI_DEPTH": data.get("EPI_DEPTH"),
"LOCATION_C": data.get("LOCATION_C")
}
data_arr.append(data_info)
print(data_arr)
转换代码如下:
data = dict(data)
报错信息截图如下所示:
报错翻译
报错翻译信息内容如下所示:
值错误:字典更新序列元素#0的长度为1;2是必需的
报错内容
报错内容:
粉丝爬取数据的时候,返回的是一个字符串形式的字典,所以粉丝就天真的想用dict()
方法把字符串转换为字典,理论上是没有问题的,但是现实可不是这样的。
小伙伴们可以按下面的方法解决即可!!!
解决方法
使用eval
函数将字符串转换为dict
字典:
str_dict = "{'name':'小明'}"
print(type(str_dict))
dict_obj = eval(str_dict)
print(dict_obj)
print(type(dict_obj))
运行结果如下所示:
以上是此问题报错原因的解决方法,欢迎评论区留言讨论是否能解决,如果有用欢迎点赞收藏文章谢谢支持,博主才有动力持续记录遇到的问题!!!
千人全栈VIP答疑群联系博主帮忙解决报错
由于博主时间精力有限,每天私信人数太多,没办法每个粉丝都及时回复,所以优先回复VIP粉丝,可以通过订阅限时9.9付费专栏《100天精通Python从入门到就业》进入千人全栈VIP答疑群,获得优先解答机会(代码指导、远程服务),白嫖80G学习资料大礼包,专栏订阅地址:https://blog.csdn.net/yuan2019035055/category_11466020.html
-
优点:作者优先解答机会(代码指导、远程服务),群里大佬众多可以抱团取暖(大厂内推机会),此专栏文章是专门针对零基础和需要进阶提升的同学所准备的一套完整教学,从0到100的不断进阶深入,后续还有实战项目,轻松应对面试!
-
专栏福利:简历指导、招聘内推、每周送实体书、80G全栈学习视频、300本IT电子书:Python、Java、前端、大数据、数据库、算法、爬虫、数据分析、机器学习、面试题库等等
-
注意:如果希望得到及时回复,和大佬们交流学习,订阅专栏后私信博主进千人VIP答疑群
相关文章
- 解决 js 报错 xxx is not defined「建议收藏」
- Navicat Premium 12连接Oracle时提示oracle library is not loaded的问题解决
- 成功解决Address localhost:1099 is already in use
- Navicat Premium 12连接Oracle时提示oracle library is not loaded的问题解决「建议收藏」
- 【说站】解决zblog显示 Table‘zbp_post’is marked as crashed and should be repaired 错误的3种方法
- 苹果APP上架App Store被拒常见问题及解决思路分享
- name ‘reload‘ is not defined解决方法
- oracle错误904解决方法_遇到Oracle错误4063
- vue跨域解决的几种方案「建议收藏」
- 解决angular创建项目报错:setTimeout is not defined
- ReferenceError: primordials is not defined错误解决
- 【解决】librosa.load MP3返回空 或 报错Input signal length=0 is too small to resample from
- solr错误【已解决】:solr is not an explicit field and doesn't match a dynamicField
- 【已解决】Intellij IDEA 运行时报 Command line is too long 解决方法
- ps软件安装错误代码1怎么解决?ps2023中文版下载安装教程
- 如何解决 WordPress“addComment is not defined”的错误
- oracle11g用户登录时被锁定问题的解决方法 (ora-28000 the account is locked)
- 解决服务器连接错误Host ‘XXX’ is not allowed to connect to this MySQL server详解数据库
- 用户解决MySQL删除Root用户的方法(mysql删除root)
- 解决Oracle 01092:提高数据库安全性(oracle01092)
- 解决Oracle数据脱敏之道(oracle数据脱敏)
- null函数深入理解Oracle数据库的IS NULL函数(oracle里的is)
- Linux Tar 解压:轻松解决压缩文件问题(linuxtar解压)
- Oracle的并发控制:解决瓶颈(oracle并发处理)
- 解决 MySQL 数据库表字段乱码问题(mysql字段乱码)
- 轻松下载Oracle BI,快速解决商业智能问题(oraclebi下载)
- Linux解决不显示验证码的方法(linux验证码不显示)
- 解决方法:修复GRUB启动引导Note to the reviewer: Please note that this suggested title is already more than 25 characters long. Therefore if the title length is a strict requirement please let me know and I will modify it accordingly.(linux安装无法引导)
- Oracle内存解决报错难题(oracle内存报错)
- 解决MySQL x86库文件问题的方法大全(mysql x86库文件)
- 如何解决MySQL无法加入中文字符的问题(mysql不能加入中文)
- c#解决IIS写Excel的权限问题
- MSSQL2008不能用IP登录问题如何解决
- js处理php输出时间戳对不上号的解决方法