Python3爬虫 数据存储之TXTJSONCSV

Posted Infi_chu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python3爬虫 数据存储之TXTJSONCSV相关的知识,希望对你有一定的参考价值。

 Infi-chu:

http://www.cnblogs.com/Infi-chu/

TXT文本存储

TXT文本存储,方便,简单,几乎适用于任何平台。但是不利于检索。

1.举例:

使用requests获得网页源代码,然后使用pyquery解析库解析

import requests
from pyquery import PyQuery as pq

url = \'https://www.zhihu.com/explore\'
header = {
    \'User-Agent\':\'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)\'
}
html = requests.get(url,headers=header).text
doc = pq(html)
items = doc(\'.explore-tab .feed-item\').items()
for item in items:
    question = item.find(\'h2\').text()
    author = item.find(\'.author-link-line\').text()
    answer = pq(item.find(\'.content\').html()).text()
    with open(\'test.txt\',\'a\',encoding=\'uft-8\') as f:
        f.write(\'\\n\'.join([author,question,answer]))
        f.write(\'\\n\'.join(\'\\n\'+\'=\'*50+\'\\n\'))

2.打开方式:

r

rb

r+

rb+

w

wb

w+

wb+

a

ab

a+

ab+

【注】

w和a的区别相当于Linux中>和>> 的区别

 

JSON文件存储

JSON全称为(JavaScript Object Notation),JavaScript对象标记,通过对象和数组的组合来表示数据,构造简洁,结构化程度非常高,类似于Python当中的字典

1.对象&数组:

在JavaScript中,一切皆对象。

对象:

在JavaScript中使用{}来表示,可以理解为Python当中的字典,有键有值。

数组:

在JavaScript中使用[]来表示,可以理解为Python当中的列表。

2.读取JSON

我们可以调用Python的json库的loads()方法将JSON文本转化为JSON对象,使用dumps()方法将JSON对象转化为文本字符串。

使用get()方法得到键的名字后的值,如果没有值,则返回None,一般会自定义一个默认值,以防返回None

在JSON字符串中,要使用双引号,否则会抛出异常。

3.输出JSON

调用dumps()方法将JSON对象转化为文本字符串。

import json
data = [
{
\'name\':\'Infi-chu\',
\'sex\':\'male\',
\'birthday\':\'2000.01.01\'
}
]
with open(\'data.json\',\'w+\') as f:
    f.wirte(json.dumps(data))
\'\'\'
想要保存json的格式,可以加一个参数,indent
with open(\'data.json\',\'w\') as f:
    f.write(json.dumps(data,indent=2))
\'\'\'

 

CSV文件存储

CSV全称是(Comma-Separated Values),逗号分隔值或字符分隔值,它是以纯文本形式存储表格数据,相当于结构化的纯文本。

它比Excel更简洁,XLS文本是电子表格,它包含了文本、数值、公式和格式等内容,而CSV中不包含这些内容。

1.举例

import csv

with open(\'data.csv\',\'w+\') as cf:
    wirter = csv.writer(cf)
\'\'\'
wirter = csv.writer(cf,delimiter=\' \')    # 此参数是增加分隔符
\'\'\'
    wirter.wirterow([\'id\',\'name\',\'age\'])    # writerows是同时写入多行,writerow是单行写入
    wirter.wirterow([\'1\',\'Infi\',23])
    wirter.wirterow([\'2\',\'chu\',23])
# 字典方式的写入发
import csv
with open(\'data.csv\',\'w\')as f:
    fieldname = [\'id\',\'name\',\'age\']
    wirter = csv.DictWriter(f,filednames=filename)    # DictWriter()方法初始化一个字典写入对象
    wirter.writheader()    # writheader()方法写入头信息
    wirter.wirterows({\'id\':\'1\',\'name\':\'n1\',\'age\':1},{\'id\':\'2\',\'name\':\'n2\',\'age\':2},{\'id\':\'3\',\'name\':\'n3\',\'age\':3})

 2.读取

# 通过csv库来读取CSV文件
import csv

with open(\'data.csv\',\'r\',encoding=\'utf-8\') as f:
    reader = csv.reader(f)    # reader()方法便利出每行的内容
    for i in render:
        print(row)

# 通过pandas 读取
import pandas as pd

df = pd.read_csv(\'data.csv\')
print(df)

以上是关于Python3爬虫 数据存储之TXTJSONCSV的主要内容,如果未能解决你的问题,请参考以下文章

BOOK数据存储—文件存储(TXTJSONCSV)

Python3爬虫 数据存储之关系型数据库MySQL

python3下scrapy爬虫(第十四卷:scrapy+scrapy_redis+scrapyd打造分布式爬虫之执行)

《python3网络爬虫开发实战》--数据存储

python3下scrapy爬虫(第十一卷:scrapy数据存储进mongodb)

python3下scrapy爬虫(第九卷:scrapy数据存储进JSON文件)