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)
  • 相关阅读:
    将Nginx添加到windows服务中
    springboot使用redis管理session
    GIT常用命令
    阻止360、谷歌浏览器表单自动填充
    谈谈对Spring IOC的理解
    同一个Nginx服务器同一端口配置多个代理服务
    LeetCode 653. Two Sum IV
    109. Convert Sorted List to Binary Search Tree(根据有序链表构造平衡的二叉查找树)
    108. Convert Sorted Array to Binary Search Tree(从有序数组中构造平衡的BST)
    LeetCode 236. Lowest Common Ancestor of a Binary Tree(二叉树求两点LCA)
  • 原文地址:https://www.cnblogs.com/xiaoyaowuming/p/6405622.html
Copyright © 2011-2022 走看看