zoukankan      html  css  js  c++  java
  • 爬虫学习之csv读取和存储

    一、读取

    该读取主要使用到csv里面的Reader()、DictReader()方法,和引用io里面的StringIO进行对字符串进行封装

    在处理网上的csv文件方式主要是有一下几方面:

    • 手动把CSV 文件下载到本机,然后用Python 定位文件位置;
    • 写Python 程序下载文件,读取之后再把源文件删除;
    • 从网上直接把文件读成一个字符串,然后转换成一个StringIO 对象,使它具有文件的
    属性。

    最优处理方案:

    虽然前两个方法也可以用,但是既然你可以轻易地把CSV 文件保存在内存里,就不要
    再下载到本地占硬盘空间了。直接把文件读成字符串,然后封装成StringIO 对象,让
    Python 把它当作文件来处理,就不需要先保存成文件了。
     1 from urllib.request import urlopen
     2 from bs4 import BeautifulSoup
     3 from io import StringIO
     4 import csv
     5 
     6 data = urlopen("http://pythonscraping.com/files/MontyPythonAlbums.csv").read().decode('ascii','ignore')
     7 dataFile = StringIO(data)
     8 csvReader = csv.reader(dataFile)
     9 
    10 for row in csvReader:
    11     print(row)

    通过引用StringIO进行字符串封装,然后进行读取该对象里面的内容,这样就不用在通过下载到本地,再进行读取本地文件操作

     进一步优化,通过把字符串转换成字典模式

     1 from urllib.request import urlopen
     2 from bs4 import BeautifulSoup
     3 from io import StringIO
     4 import csv
     5 
     6 data = urlopen("http://pythonscraping.com/files/MontyPythonAlbums.csv").read().decode('ascii','ignore')
     7 dataFile = StringIO(data)
     8 dictReader = csv.DictReader(dataFile)
     9 
    10 for row in dictReader:
    11     print(row)

    通过csv内部的DictReader方法进行把字符串进行转换成字典,然后进行操作

    二、存储

    通过open函数进行打开已存在的csv文件,并指定编码格式,和读写操作方式,再通过csv内置的write方法写入到该文件

    1 csvFile = open("./files/editors.csv", 'wt', newline='',encoding='utf-8')
    2 writer = csv.writer(csvFile)
  • 相关阅读:
    将centos_yum源更换为阿里云(官方文档)
    JIRA 破解文件研究(Win 7环境)
    告别拖延症,你也可以轻松做到
    VS2015 + EF6连接MYSQL
    start-stop-daemon
    stm32开发板无法正常写入的问题或者写入后无法正常运行的问题
    进制转换
    回文判断程序
    C语言结构体指针的引用问题
    升级/安装主题插件提示权限不足 输入FTP解决办法
  • 原文地址:https://www.cnblogs.com/xiaoyaowuming/p/6405622.html
Copyright © 2011-2022 走看看