zoukankan      html  css  js  c++  java
  • Python3爬虫(八) 数据存储之TXT、JSON、CSV

     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('
    '.join([author,question,answer]))
            f.write('
    '.join('
    '+'='*50+'
    '))
    

    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)
  • 相关阅读:
    Mini2440裸机开发之MMU
    Mini2440裸机开发之IIC
    Mini2440裸机开发之SPI
    Mini2440裸机开发之存储器控制器
    Mini2440裸机开发之模数转换开发
    Mini2440裸机开发之LCD编程(GB2312、ASCII字库制作)
    Python pandas df.iloc[:, 0] 取确定列值作双轴图
    python plot 画双坐标轴 设置百分比展示 和字体等细节
    python Sqlserver数据库画双轴图
    windows下Idea中用Python访问oracle数据库的方法
  • 原文地址:https://www.cnblogs.com/Infi-chu/p/8979219.html
Copyright © 2011-2022 走看看