当前位置:首页 » 《随便一记》 » 正文

【python数据分析】将爬取的数据保存为csv格式

26 人参与  2022年10月29日 12:18  分类 : 《随便一记》  评论

点击全文阅读


数据保存为csv格式

csv文件python的csv模块从csv文件读取内容写入csv文件运用实例数据准备将数据存为字典的形式存储到csv文件

csv文件

一种用逗号分割来实现存储表格数据的文本文件。

python的csv模块

python遍历代码:

arr = [12, 5, 33, 4, 1]#遍历输出1for i in range(0, len(arr)):    item = arr[i]    print(item)#遍历输出2for item in arr:    print(item)#遍历输出3string_arr = ["hi", "hello", "你好", "aloha"]for item in string_arr:    print("本次循环 item 变量的值", item)

从csv文件读取内容

用DictReader对象的创建方法以及通过filenames属性获取csv表格的表头。

import csv#打开csvfo = open("info.csv")#打开csv文件的文件对象作为参数来创建dictreader类的对象,存在reader变量中reader = csv.DictReader(fo)#调用reader对象的filednames属性,获取csv文件表格的开头headers = reader.fieldnames#关闭文件fo.close()#打印print(headers)

获取表格实际内容。

fo = open("info.csv")reader = csv.DictReader(fo)#创建列表,存储读到的行row_list = []#遍历for row in reader:    row_list.append(row)fo.close()#打印print(row_list[0])#遍历row_listfor d in row_list:    #d是字典,直接打印key为年龄值即可    print(d["年龄"])#打印

写入csv文件

python提供了DictWriter方法,可以讲表格数据以字典的形式存储到csv文件中。

import csv#打开一个文件,假设是info.csv,写入所以是w#newline='',写入时需要指定fo = open("info2.csv", "w", newline='')#将表头存储到一个列表里header = ["姓名", "年龄", "部门"]#创建一个DictWriter对象,第二个参数就是上面创建的表头writer = csv.DictWriter(fo, header)writer.writeheader()#写入一行记录,以字典的形式,key需要与表头对应writer.writerow({"姓名": "小明", "年龄":"28", "部门": "行政部"})#关闭文件fo.close()

运行后,相应的文件夹下会出现一个对应的csv文件。
在这里插入图片描述
也可以使用writer.writerows(row_list)来写入多个。

运用实例

数据准备

1、打开网页,读取内容,并创建相应的BeautifulSoup对象
2、找到包含新闻的div元素列表
3、从2中抽取标题
4、从2中抽取时间

from bs4 import BeautifulSoupdef create_doc_from_filename(filename):    fo = open(filename, "r", encoding='utf-8')    html_content = fo.read()    fo.close    doc = BeautifulSoup(html_content)    return doc

(记得要pip install bs4)

#输入参数是BeautifulSoup对象,返回包含新闻的div元素列表def find_index_labels(doc):    index_labels = doc.find_all("div", class_ = "indexs")    return index_labels
#实现新闻标题的抽取函数def get_title(label_object):    #从刚才的参数传入的标签对象中过滤出所有的target = _blank的a标签    a_labels = label_object.find_all("a", target = "_blank")    #取得第一个标签对象    my_label = a_labels[0]    #将标签的文字内容作为返回值返回    return my_label.get_text()
#实现获取新闻发布时间的函数def get_pub_time(label_object):    #找到class = comment-link的span标签    spans = label_object.find_all("span", class_ = "comment-link")    #取第一个    span = spans[0]    #返回标题属性    return span["title"]
#获取新闻标题与列表#调用create_doc_from_filename函数doc = create_doc_from_filename("jiandan.html")#传入BeautifulSoup对象,将返回的div列表存储在index_labels中index_labels = find_index_labels(doc)for label_object in index_labels:    title = get_title(label_object)    pub_time = get_pub_time(label_object)    print("标题", title)    print("发布时间", pub_time)

在这里插入图片描述

将数据存为字典的形式

#获取新闻标题与列表#调用create_doc_from_filename函数doc = create_doc_from_filename("jiandan.html")#传入BeautifulSoup对象,将返回的div列表存储在index_labels中index_labels = find_index_labels(doc)news_dict_list = []for label_object in index_labels:    title = get_title(label_object)    pub_time = get_pub_time(label_object)    news = {"标题": title, "发布时间": pub_time}    news_dict_list.append(news)print(news_dict_list)

在这里插入图片描述

存储到csv文件

#创建csvfo = open("news.csv", "w", newline='', encoding='utf-8')#表头header = ["标题", "发布时间"]writer = csv.DictWriter(fo, header)#写入表头writer.writeheader()#将上一步的字典写入csv文件中writer.writerows(news_dict_list)fo.close()

在这里插入图片描述


点击全文阅读


本文链接:http://zhangshiyu.com/post/46162.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1