数据存储(无数据库版)之一:存储为JSON
来源:互联网 发布:淘宝下单后怎么退款 编辑:程序博客网 时间:2024/06/03 14:10
#coding:utf8#使用Requests访问http://seputu.com/,获取并打印HTML文档内容import requestsuser_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 BeautifulSoupsoup = 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文件#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 jsonstr = [{"username":"七夜","age":24},(2,3),1]json_str = json.dumps(str,ensure_ascii=False)print json_strwith 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_strwith open('qiye.txt','r') as fp: print json.load(fp)#以上为讲解python操作JSON;#接下来接着例子把提取到的标题,章节和链接进行JSON存储:import jsonfrom bs4 import BeautifulSoupimport requestsuser_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)
阅读全文
0 0
- 数据存储(无数据库版)之一:存储为JSON
- 数据存储(无数据库版)之二:存储为CSV
- 爬虫学习5.1.2数据存储(无数据库)存储为CSV
- 数据存储(无数据库版)之三:多媒体文件抽取
- 数据存储(无数据库版)之四:Email提醒
- 将爬取的数据存储为json文件
- 数据存储之一 文件存储
- 数据库中存储json类型的数据
- localStorage存储JSON数据
- 关于Python爬虫无数据库的存储1之存储为csv格式
- Android数据存储总结 之一
- 数据库存储为null时,自定义字符标识。使转为json数据后,列不丢失或有undefined。
- Uber无模式数据存储
- SQLite数据库存储数据
- SQLite数据库存储数据
- SQLite数据库存储数据
- SQLite数据库存储数据
- Android数据存储:数据库
- MySqL遇到Can't get hostname for your address解决办法
- hdu 1796(容斥原理)
- Android------JNI的调用方法
- JSP 之JQ 与JS互相转换
- Http协议详解
- 数据存储(无数据库版)之一:存储为JSON
- JVM之早期(编译器)优化
- 八皇后
- GitHub:(2)Windows上安装与使用 Git
- 实习第二天
- [BZOJ2005][NOI2010]能量采集(莫比乌斯反演)
- JAVA窗口编程笔记
- HTML <li> 标签实现不换行
- [Python]网络爬虫(二):利用urllib通过指定的URL抓取网页内容