首先,我得到了这个错误。当我试着跑步时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)
。