设为首页收藏本站language→→ 语言切换

鸿鹄论坛

 找回密码
 论坛注册

QQ登录

QQ不能直接注册帐号

查看: 72|回复: 0

[其他情况] 爬虫数据文件存储要点之JSON

[复制链接]
发表于 2020-5-19 17:23:48 | 显示全部楼层 |阅读模式
我们程序爬取到的信息肯定是需要保存到本地的,保存信息的方式有数据库和文件的形式,保存文件的常用格式就比较多,如 JSON、CSV、TXT、图⽚、视频、⾳频等,常用的一些库有 csv、xlwt、json、pandas、pickle、python-docx 等,这里我我们了解下JSON格式的使用,
JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
首先我们是保存爬取到的数据,自然就需要要写爬虫,这里简单的示例下,提取信息我就直接放代码了,用的BeautifulSoup的节点选择器和方法选择器。
import jsonimport csvimport lxmlimport requestsfrom bs4 import BeautifulSoup as BSresponse = open('html.txt',encoding='utf-8')bsobj = BS(response, 'lxml')items = bsobj.find_all('div', class_='explore-feed feed-item', )for item in items:    question = item.a.string    author = item.find(name='a', class_='author-link').get_text()    answer = item.textarea.string    info = [question,author,answer,]    dict = {'question':question, 'author':author, 'answer':answer}    save_as_txt(info)    save_as_json(dict)    save_as_csv(info)


json我们主要用两个方法:
loads(string)读取和
dumps(data, indent=4, ensure_ascii=False)输出
indent 是为了美化输入,是缩进4格
ensure_ascii是为了能够显示中文,否则中文会显示为Unicode字
我们接受一个字典作为输入内容,追加模式写入
def save_as_json(dict):    filename = 'info.json'    with open(filename, 'a',encoding='utf-8') as file:        file.write(json.dumps(dict, indent=4, ensure_ascii=False)+',\n')


结果:

注意的:
1 json.dumps将Python对象编码成JSON字符串
2 josn.loads 将已经编码的json字符串变为python对象。(网上抓包得到的json数据,需要解码成python对象,再进行后续处理)

如果觉得帖子内容对你有帮助,请点击【评分】给我增加好评度,加分不会扣除自己的积分。

论坛已启用匿名发帖功能,快发帖试试新功能吧

发考试战报,来这里申请勋章,菜鸟变高手从此走上人生巅峰

注意!恶意灌水,将会被收回所得积分 网络技术电报群 http://ttttt.me/cciehcie
您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )

GMT+8, 2020-8-15 03:22 , Processed in 0.077062 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz!

© 2001-2020 HH010.COM

快速回复 返回顶部 返回列表