gpt4 book ai didi

python json 字节类型序列化问题

转载 作者:太空宇宙 更新时间:2023-11-03 19:41:04 26 4
gpt4 key购买 nike

我正在按照教程从静态网站构建一个简单的网络爬虫,但我收到以下类型错误:TypeError(f'类型为 {o.class.name} 的对象 '类型错误:字节类型的对象不可 JSON 序列化

这是迄今为止我的代码: 从 bs4 导入 BeautifulSoup 导入请求 导入json

url = 'http://ethans_fake_twitter_site.surge.sh/'
response = requests.get(url, timeout=5)
content = BeautifulSoup(response.content, "html.parser")
tweetArr = []

for tweet in content.findAll('div', attrs = {'class': 'tweetcontainer'}):
tweetObject = {
"author": tweet.find('h2', attrs= {'class': 'author'}).text.encode('utf-8'),
"date": tweet.find('h5', attrs= {'class': 'dateTime'}).text.encode('utf-8'),
"content": tweet.find('p', attrs= {'class': 'content'}).text.encode('utf-8'),
"likes": tweet.find('p', attrs= {'class': 'likes'}).text.encode('utf-8'),
"shares": tweet.find('p', attrs= {'class': 'shares'}).text.encode('utf-8')
}
tweetArr.append(tweetObject)
with open('twitterData.json', 'w') as outfile:
json.dump(tweetArr, outfile)

我唯一可以假设错误的是这篇文章使用的是早期版本的 python,但这篇文章是最近的,所以情况不应该是这样。正在执行代码并创建 json 文件,但其中唯一的数据是“author:”。很抱歉,如果答案对你们中的一些人来说是显而易见的,但我才刚刚开始学习。

这是完整的错误日志:(tutorial-env) C:\Users\afaal\Desktop\python\webscraper>python webscraper.py回溯(最近一次调用最后一次): 文件“webscraper.py”,第 20 行,位于 json.dump(tweetArr, outfile) 文件“C:\Users\afaal\AppData\Local\Programs\Python\Python38\lib\json__init__.py”,第 179 行,转储中 对于可迭代中的 block : 文件“C:\Users\afaal\AppData\Local\Programs\Python\Python38\lib\json\encoder.py”,第 429 行,位于 _iterencode 从 _iterencode_list(o, _current_indent_level) 中产生 文件“C:\Users\afaal\AppData\Local\Programs\Python\Python38\lib\json\encoder.py”,第 325 行,在 _iterencode_list 中 block 的产量 文件“C:\Users\afaal\AppData\Local\Programs\Python\Python38\lib\json\encoder.py”,第 405 行,在 _iterencode_dict 中 block 的产量 文件“C:\Users\afaal\AppData\Local\Programs\Python\Python38\lib\json\encoder.py”,第 438 行,位于 _iterencode o = _默认(o) 文件“C:\Users\afaal\AppData\Local\Programs\Python\Python38\lib\json\encoder.py”,第 179 行,默认 raise TypeError(f'类型为 {o.class.name} 的对象 '类型错误:字节类型的对象不可 JSON 序列化

最佳答案

好吧,事实证明我需要删除“.text”之后的所有内容,并且只需谷歌“Json序列化”(我只尝试谷歌搜索我的特定 TypeError 并且没有得到任何结论性信息)。正确的代码如下,以防像我这样的业余爱好者遇到同样的问题:

url = 'http://ethans_fake_twitter_site.surge.sh/'
response = requests.get(url, timeout=5)
content = BeautifulSoup(response.content, "html.parser")
tweetArr = []

for tweet in content.findAll('div', attrs = {'class': 'tweetcontainer'}):
tweetObject = {
"author": tweet.find('h2', attrs= {'class': 'author'}).text,
"date": tweet.find('h5', attrs= {'class': 'dateTime'}).text,
"content": tweet.find('p', attrs= {'class': 'content'}).text,
"likes": tweet.find('p', attrs= {'class': 'likes'}).text,
"shares": tweet.find('p', attrs= {'class': 'shares'}).text
}
tweetArr.append(tweetObject)
with open('twitterData.json', 'w') as outfile:
json.dump(tweetArr, outfile)

所有功劳都归功于@juanpa.arrivilillaga,非常感谢您彻底解决了这个问题!

关于python json 字节类型序列化问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60420188/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com