Python对HTML正文抽取后存储为两种格式:JSON和CSV

一、存储为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,default=None, sort\_keys=False, **kw)


dump(obj, fp, skipkeys=False, ensure\_ascii=True, check\_circular=True,allow\_nan=True, cls=None, indent=None, separators=None,default=None, sort\_keys=False, **kw)

常用参数分析:

Skipkeys:默认值是False,如果dict的keys内的数据不是python的基本类型(str,unicode,int,long,float,bool,None),设置为False时,就会报TypeError的错误。此时设置成True,则会跳过这类key

ensure\_ascii:,当它为True的时候,所有非ASCII码字符显示为\uXXXX序列,只需在dump时将ensure\_ascii设置为False即可,此时存入json的中文即可正常显示。)

indent:应该是一个非负的整型,如果是0就是顶格分行显示,如果为空就是一行最紧凑显示,否则会换行且按照indent的数值显示前面的空白分行显示,这样打印出来的json数据也叫pretty-printed json

separators:分隔符,实际上是(item\_separator,dict\_separator)的一个元组,默认的就是(',',':');这表示dictionary内keys之间用“,”隔开,而KEY和value之间用“:”隔开。

encoding默认是UTF-8,设置json数据的编码方式。

sort\_keys将数据根据keys的值进行排序。

例如:抽取盗墓笔记(http://seputu.com/)的标题,存放在/home/demo.json文件中

from bs4 import BeautifulSoup

import requests

import json

user\_agent = 'Mozilla/4.0 (compatible;MSIE 5.5;Window NT)'

headers = {'User-Agent':user\_agent}

r = requests.get('http://seputu.com/',headers=headers)

\#print(r.text)

soup = BeautifulSoup(r.text,'html.parser')

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})

content.append({'title':h2\_title,'content':list})

with open('/home/demo.json,'w') as fp:

json.dump(content,fp=fp,ensure\_ascii=False,indent=4)

Python爬虫之数据存储(无数据库版)教程 Python爬虫之数据存储(无数据库版)教程

二、存储为CSV:

CSV(Comma-Separated Values,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。

CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。

特点

  • 读取出的数据一般为字符类型,如果是数字需要人为转换为数字
  • 以行为单位读取数据
  • 列之间以半角逗号或制表符为分隔,一般为半角逗号
  • 一般为每行开头不空格,第一行是属性列,数据列之间以间隔符为间隔无空格,行之间无空行。

1、Python使用csv库来读写CSV文件,需要用到Writer对象:

(1)写入CSV文件:

import csv

headers = ['ID','UserName','Password','Age','Country']

rows = [(1001,'aa','123',24,'中国'),

(1002,'bb','111',25,'美国'),

(1003,'cc','222',26,'德国'),

]

with open('/home/demo.csv','w') as f:

f\_csv = csv.writer(f)

f\_csv.writerow(headers)

f\_csv.writerow(rows)

(2)读取CSV文件:

with open('/home/demo.csv') as f:

f\_csv = csv.reader(f)

headers = next(f\_csv)

print(headers)

for row in f\_csv:

print(row)

标签: 数据库, Python, 爬虫, json, csv, True, None, False, title

相关文章推荐

添加新评论,含*的栏目为必填