• 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)
  • 相关阅读:
    Max History CodeForces
    Buy a Ticket CodeForces
    AC日记——字符串的展开 openjudge 1.7 35
    AC日记——回文子串 openjudge 1.7 34
    AC日记——判断字符串是否为回文 openjudge 1.7 33
    AC日记——行程长度编码 openjudge 1.7 32
    AC日记——字符串P型编码 openjudge 1.7 31
    AC日记——字符环 openjudge 1.7 30
    AC日记——ISBN号码 openjudge 1.7 29
    AC日记——单词倒排 1.7 28
  • 原文地址:https://www.cnblogs.com/Infi-chu/p/8979219.html
Copyright © 2020-2023  润新知