合并两个json url时出现问题



首先,我得到了这个错误。当我试着跑步时pip3 install --upgrade json在试图解决错误时,python找不到模块。我正在处理的代码段可以在错误下面找到,但对于代码本身的一些进一步的指导将不胜感激。

错误:

Traceback (most recent call last):
File "Chicago_cp.py", line 18, in <module>
StopWork_data      = json.load(BeautifulSoup(StopWork_response.data,'lxml'))
File "/usr/lib/python3.8/json/__init__.py", line 293, in load
return loads(fp.read(),
TypeError: 'NoneType' object is not callable

脚本:

#!/usr/bin/python
import json
from bs4 import BeautifulSoup
import urllib3
http = urllib3.PoolManager()
# Define Merge
def Merge(dict1, dict2):
res = {**dict1, **dict2}
return res
# Open the URL and the screen name
StopWork__url = "someJsonUrl"
Violation_url = "anotherJsonUrl"
StopWork_response  = http.request('GET', StopWork__url)
StopWork_data      = json.load(BeautifulSoup(StopWork_response.data,'lxml'))
Violation_response = http.request('GET', Violation_url)
Violation_data     = json.load(BeautifulSoup(Violation_response.data,'lxml'))
dict3 = Merge(StopWork_data,Violation_data)
print (dict1)

json.load需要一个文件对象或其他具有read方法的对象。BeautifulSoup对象没有方法read。您可以向它询问任何属性,它会尝试找到具有该名称的子标记,即本例中的<read>标记。当它找不到一个时,它返回导致错误的None。这里有一个演示:

import json
from bs4 import BeautifulSoup
soup = BeautifulSoup("<p>hi</p>", "html5lib")
assert soup.read is None
assert soup.blablabla is None
assert json.loads is not None
json.load(soup)

输出:

Traceback (most recent call last):
File "main.py", line 8, in <module>
json.load(soup)
File "/usr/lib/python3.8/json/__init__.py", line 293, in load
return loads(fp.read(),
TypeError: 'NoneType' object is not callable

如果URL返回JSON,那么您根本不需要BeautifulSoup,因为它用于解析HTML和XML。只需使用json.loads(response.data)

最新更新