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

目录

csv文件

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

python的csv模块

python遍历代码:

arr = [12, 5, 33, 4, 1]
#遍历输出1
for i in range(0, len(arr)):
    item = arr[i]
    print(item)

#遍历输出2
for item in arr:
    print(item)

#遍历输出3
string_arr = [\"hi\", \"hello\", \"你好\", \"aloha\"]
for item in string_arr:
    print(\"本次循环 item 变量的值\", item)

从csv文件读取内容

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

import csv
#打开csv
fo = 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_list
for 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文件。

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

也可以使用writer.writerows(row_list)来写入多个。

运用实例

数据准备

1、打开网页,读取内容,并创建相应的BeautifulSoup对象

2、找到包含新闻的div元素列表

3、从2中抽取标题

4、从2中抽取时间

from bs4 import BeautifulSoup
def 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)

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

将数据存为字典的形式

#获取新闻标题与列表
#调用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)

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

存储到csv文件

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

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

总结

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容