数据存储(无数据库版)之一:存储为JSON
2017-10-24 21:14
148 查看
#coding:utf8 #使用Requests访问http://seputu.com/,获取并打印HTML文档内容 import requests user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' headers = {'User-Agent':user_agent} r = requests.get('http://seputu.com/', headers=headers) print r.text #分析网页的HTML结构: #标题和章节都被包含在<div class="mulu">标记下,标记位于其中的<div class="mulu-title">下的<h2>中, #章节位于其中的<div class="box">下的<a>中 from bs4 import BeautifulSoup soup = BeautifulSoup(r.text,'html.parser',from_encoding='utf-8') for mulu in soup.find_all(class_="mulu"): h2 = mulu.find('h2') if h2 != None: h2_title = h2.string #获取标题 for a in mulu.find(class_='box').find_all('a') : #获取所有的a标记中url和章节内容 href = a.get('href') box_title = a.get('title') print href,box_title #此时已经成功获取标题,章节;接下介绍python操作JSON文件 4000 #python通过JSON模块实现对JSON的编码解码操作; #编码: # 把python对象转换成JSON对象的过程,常用的两个函数 dumps 和 dump; # dump 是把python对象转换成JSON对象,并将JSON对象通过fp文件流写入文件; # dumps 生成一个字符串 #dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, # allow_nan=True, cls=None, indent=None, separators=None, # encoding='utf-8', default=None, sort_key=False, **kw) #dump(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True, # allow_nan=True, cls=None, indent=None, separators=None, # encoding='utf-8', default=None, sort_key=False, **kw) #参数分析: #Skipkeys:默认值为False。如果dict的keys内部的数据不是python的数据类型(str, # unicode,int,long,float,bool,None),设置为False时,就会报TypeError错误。 # 设置为True时,则会跳过这类key; #ensure_ascii:默认值True。如果dict内含有非ASCII的字符串,则会以类似"\uXXXX" # 的格式显示数据,设置成False后,就能正常显示; #indent:是一个非负的整形,如果是0或者为空,则显示数据,否则会换行且按照indent的 # 数量显示前面的空白,将JSON内容进行格式化显示; #separators:分隔符,实际上是(item_separator,dict_separator)的一个元祖,默认的就是(',',':'),这表示 # dictionary内keys之间用","隔开,key和value之间用":"隔开; #encoding:默认是UTF-8。设置JSON数据的编码方式; #sort_keys:将数据根据keys的值进行排序; import json str = [{"username":"七夜","age":24},(2,3),1] json_str = json.dumps(str,ensure_ascii=False) print json_str with open('qiye.text','w') as fp: #写入文件 json.dump(str,fp=fp,ensure_ascii=False) #解码: #把json对象转成python对象的过程,常用的两个函数是 load和loads 函数,区别于dump与dumps一样; #loads(s, encoding=None, cls=None, object_hook=None, parse_float=None, # parse_int=None, parse_constant=None, object_pairs_hook=None, **kw) #load(fp, encoding=None, cls=None, object_hook=None, parse_float=None, # parse_int=None, parse_constant=None, object_pairs_hook=None, **kw) #参数分析: #encoding:指定编码风格 #parse_float:如果指定,将把每一个JOSN字符串按照float解码调用。 # 默认情况下,相当于float(num_str) #parse_int:如果指定,将把每一个JOSN字符串按照int解码调用。 # 默认情况下,相当于int(num_str) new_str = json.loads(json_str) print new_str with open('qiye.txt','r') as fp: print json.load(fp) #以上为讲解python操作JSON; #接下来接着例子把提取到的标题,章节和链接进行JSON存储: import json from bs4 import BeautifulSoup import requests user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' headers={'User-Agent':user_agent} r = requests.get('http://seputu.com/',headers=headers) soup = BeautifulSoup(r.text,'html.parser',from_encoding='utf-8') content=[] for mulu in soup.find_all(class_="mulu"): h2 = mulu.find('h2') if h2 != None: h2_title = h2.string #获取标题 list=[] for a in mulu.find(class_='box').find_all('a'): #获取所有的a标记中url和章节内容 href = a.get('href') box_title = a.get('title') list.append({'href':href,'box_title':box_title}) with open('qiye.json','wb') as fp: json.dump(content,fp=fp,indent=4)
相关文章推荐
- 数据/配置 的存储方式 Json篇 以JsonCpp库使用为例
- <unity>关于快速的数据读取和存储——JSON(qwq)
- json数据的存储与读取
- sql存储过程中处理json数据
- 【数据存储】——JSON的解析和生成
- 【Unity】使用类对象存储Json数据——星座运势案例
- windows8开发-metro应用中使用xml+json作为数据存储方式
- python json 数据读取,存储
- Android数据存储——2.文件存储_F_解析JSON文档
- 【Unity&XML&JSON】浅谈XML与JSON等游戏数据存储的优劣及其应用
- 将后台数据(C#)转换成JSON字符串传到页面转换成json对象存储在JS中
- Android---Volley请求 Json解析 xUtils数据存储
- Android数据存储——2.文件存储_F_解析JSON文档
- 关于localStorage存储json数据
- java解析json数据及java对象存储
- 页面的浏览次数尝试用json数据存储到文件中
- python数据存储系列教程——python对象与json字符串的相互转化,json文件的存储与读取
- angularJs中json数据转换与本地存储的实例
- Android如何把json格式的数据存储到xml中
- 【数据存储】JSON数据解析