zoukankan      html  css  js  c++  java
  • (完整)爬取数据存储之TXT、JSON、CSV存储

    一、文件存储

    1. TXT文本存储
    代码有不明白的 欢迎来微信公众号“他她自由行”找我,回复任何话都可以 我都会回你哒~

    例:知乎发现页面,获得数据存成TXT文本

    import requests
    from pyquery import PyQuery as pq
    url="https://www.zhihu.com/explore"
    
    headers={'User-Agent':'ozilla/5.0 (iPhone; CPU iPhone OS 11_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E5216a QQ/7.5.5.426 V1_IPH_SQ_7.5.5_1_APP_A Pixel/1080 Core/UIWebView Device/Apple(iPhone 8Plus) NetType/WIFI QBWebViewType/1'
            }
    html=requests.get(url,headers=headers).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').text()
        answer=pq(item.find('.content').html()).text()
        with open('zhihu_explore.text','a',encoding='utf-8') as file:
            file.write('
    '.join([question,author,answer]))
            file.write('
    '+'='*50+'
    ')
    

    注意:

    1. 在用pyquery解析时,一定要找准属性进行匹配;
    2. 打开文件open()函数第二个参数设置为a,其他值:
       r:以只读方式打开文件
       w:以写入方式打开文件(覆盖之前文件)
       a:以追加方式打开文件(不覆盖之前文件,追加上)
       特:后面跟 + :代表以读写方式打开文件
           后面跟 b :代表以二进制方式打开文件
    

    3.每次open()打开文件后都要用close()关闭,直接用 with as 语句,会自动关闭文件。

    2.JSON文件存储

    JSON,是JavaScript对象标记,通过对象和数组的组合来表示数据

    对象:数据结构为{key1:value1,key2:value2,...}的键值对结构
    数组:数据结构为['Java','javascript','vb',...]的索引结构
    (1)读取JSON文件

    loads():把数据从JSON文本字符串转为JSON对象
    dumps():把数据从JSON对象转为文本字符串
    data=json.loads(str)  //type(data)是list对象
    str=json.dumps(data) //type(str)是字符串
    
    获取属性值:
    data[0]['name'] 或
    data[0].get('name')     //两种方式获取第一个元素的name属性的值;
           .get('name',tom) //.get()方式更好:当没有name值时,会报None且可以用用第二个参数设定默认值
    读取:
    import json
     with open('data.json','r') as file:
        str=file.read()
        data=json.loads(str)
    

    注意:

    1. JSON的数据需要双引号来包围。
    2. 在data.json文件中是以字符串存在,读取时要用loads()转成JSON对象来应用,存储时用dumps()把JSON对象存成字符串。

    (2)输出JSON,写入文件

    with open('data.json','w') as file:
        file.write(json.dumps(data,indent=2,ensure_ascii=False)) //indent是缩进个数,ensure_ascii是防止中文被编译成ascii码
    
    
    3.csv文件存储

    csv,叫作逗号分隔值或字符分隔值,以纯文本形式存储表格数据。

    (1) 写入

    import csv
    with open('data.csv','w') as csvfile:
        writer=csv.writer(csvfile)  //初始化写入对象
        writer.writerow(['id','name','age'])
        writer.writerow(['10001','Mike','20'])
        writer.writerow(['10002','Bob','23'])
        writer.writerow(['10003','Jordan','21'])
        
    这样就会生成一个data.csv文件
    

    特:

    1. writer=csv.writer(csvfile,delimiter=' ') 意味着将列与列间的分隔符,变成空格分隔符
    2. writer.writerow([['10001','Mike','20'],['10002','BOb','23'],['10003','Jordan','21']])
      以二维列表的形式写入
    3. 字典形式写入:
        import csv 
        with open('data.csv','w') as csvfile:
            filename=['id','name','age']  //定义写入名称
            writer=csv.DictWriter(csvfile,filename=filename) //初始化一个字典写入对象
            writer.writeheader()          //写入头信息
            writer.writerow({'id':'10001','name':'Mike','age':20})
            writer.writerow({'id':'10002','name':'Bob','age':23})
            
    

    注意:如果name='李明',则要改变编码方式open('data.csv','w',encoding='utf-8') 变成中文编码

    (2)读取

    (1 利用csv库读取:

    import csv
    with open('data.csv','r','utf-8') as csvfile:
        reader=csv.reader(csvfile)
        for row  in reader:
            print(row)
    //按行输出数据
    

    (2 利用pandas读取:
    (pandas是数据分析当中非常重要的一个库,在我的数据分析博客中会提及很多次)

    import pandas as pd
    df=pd.read_csv('data.csv')
    print(df)
    
    代码有不明白的 欢迎来微信公众号“他她自由行”找我,回复任何话都可以 我都会回你哒~
  • 相关阅读:
    react 封装antd menu组件,路由懒加载,可折叠,可配置显示和隐藏,刷新后选择正确的菜单,打开正确的submenu
    useHistory做页面跳转导航
    react-draft-wysiwyg富文本组件
    html转json json转html
    create-react-app 生成 report.html 可视化打包分析
    axios设置请求头实现post请求发送数据的格式(Form Data)
    url查询参数中的汉字如何解码
    React在body下追加全局组件并实现渲染更新
    Loadrunner-08-增强和优化脚本-检查点
    Loadrunner-06-增强和优化脚本-事务
  • 原文地址:https://www.cnblogs.com/xubin97/p/10354508.html
Copyright © 2011-2022 走看看