使用python json.dump(数组,outfile)将数据转储到outputfile
我正在尝试使用以下代码将我从站点“刮取”的数据写入json输出文件:使用python json.dump(数组,outfile)将数据转储到outputfile,python,json,dump,Python,Json,Dump,我正在尝试使用以下代码将我从站点“刮取”的数据写入json输出文件: from bs4 import BeautifulSoup import requests import json path = ["https://www.test.be?page=,https://www.test2.be?page="] adresArr = [] for i in path: pagina = 0; for x in range(0, 4): url = i + st
from bs4 import BeautifulSoup
import requests
import json
path = ["https://www.test.be?page=,https://www.test2.be?page="]
adresArr = []
for i in path:
pagina = 0;
for x in range(0, 4):
url = i + str(pagina)
response = requests.get(url, timeout=5)
content = BeautifulSoup(response.content, "html.parser")
for adres in content.findAll('tr', attrs={"class": "odd clickable-row"}):
adresObject = {
"postcode": adres.find('td', attrs={"class": "views-field views-field-field-locatie-postal-code"}).text.encode('utf-8'),
"naam": adres.find('td', attrs={"class": "views-field views-field-field-locatie-thoroughfare"}).text.encode('utf-8'),
"plaats": adres.find('td', attrs={"class": "views-field views-field-field-locatie-locality"}).text.encode('utf-8')
}
adresArr.append(adresObject)
for adres in content.findAll('tr', attrs={"class": "odd clickable-row active"}):
adresObject = {
"postcode": adres.find('td', attrs={"class": "views-field views-field-field-locatie-postal-code"}).text.encode('utf-8'),
"naam": adres.find('td', attrs={"class": "views-field views-field-field-locatie-thoroughfare"}).text.encode('utf-8'),
"plaats": adres.find('td', attrs={"class": "views-field views-field-field-locatie-locality"}).text.encode('utf-8')
}
adresArr.append(adresObject)
pagina = x
with open('adresData.json', 'w') as outfile:
json.dump(adresArr, outfile)
我收到以下错误:类型为bytes的对象不可json序列化
如果我打印阵列本身,它看起来就可以了。但我一直在把它写到json文件中。
我做错了什么
这是我第一次用python编写代码(并没有太多的编码经验),所以请明确回答,以便理解:)
提前感谢您解决此问题。。。您只需要转换元素的数据类型 以下是先前回答的同一问题的参考
这可能有助于以下几行:
"postcode": adres.find('td', attrs={"class": "views-field views-field-field-locatie-postal-code"}).text.encode('utf-8')
.text
结果应该已经是一个字符串.encode('utf-8')
使其成为json库抱怨的字节
对象。所以只需关闭它:adres.find('td',attrs={“class”:“views-field-views-field-locatie-postal-code“})。text
背景信息:字节是信息的原始单位;字符串是我们表示文本的方式。我们对字符串进行编码以生成用于存储的字节;我们解码字节以得到一个字符串。但是JSON已经被设计用于处理字符串——当它实际写入磁盘时,库将为您处理文件编码。谢谢,这解决了我的问题。我明白我现在做错了什么:)