python保存文件的几种方式「建议收藏」

python保存文件的几种方式「建议收藏」当我们获取到一些数据时,例如使用爬虫将网上的数据抓取下来时,应该怎么把数据保存为不同格式的文件呢?下面会分别介绍用python保存为txt、csv、excel甚至保存到mongodb数据库中文件的方法。保存为txt文件首先我们模拟数据是使用爬虫抓取下来的,抓取的下来的数据大致就是这样的下面使用代码保存为txt文件importrequestsfromlxmlimportetr…

大家好,又见面了,我是你们的朋友全栈君。

当我们获取到一些数据时,例如使用爬虫将网上的数据抓取下来时,应该怎么把数据保存为不同格式的文件呢?下面会分别介绍用python保存为 txt、csv、excel甚至保存到mongodb数据库中文件的方法

保存为txt文件

首先我们模拟数据是使用爬虫抓取下来的, 抓取的下来的数据大致就是这样的
在这里插入图片描述
下面使用代码保存为txt文件

import requests
from lxml import etree


url = 'https://ke.qq.com/course/list/?mt=1001'
headers = { 
   "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
                         "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36"}
# 获取放回的html源代码字符串
response = requests.get(url, headers=headers).text


def save_txt():  # 保存为txt文件
    f = open("./ke.txt", "w", encoding="utf8")
    # 抓取文章目录和标题
    html = etree.HTML(response)
    li_list = html.xpath('//ul[@class="course-card-list"]/li')
    for li in li_list:
        title = li.xpath('.//a[@class="item-tt-link"]/@title')[0]
        href = li.xpath('.//a[@class="item-tt-link"]/@href')[0]
        href = "https:" + href
        f.write(f'{title}-->{href}\n')
    f.close()
save_txt()

运行程序,效果图如下
在这里插入图片描述

保存为csv文件格式

代码如下

import requests
from lxml import etree
import csv

url = 'https://ke.qq.com/course/list/?mt=1001'
headers = { 
   "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
                         "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36"}
# 获取放回的html源代码字符串
response = requests.get(url, headers=headers).text

def save_csv():  # 保存为csv文件
    with open("ke.csv", "w", encoding="utf8", newline='') as f:
        header = ["title", "href"]
        writer = csv.DictWriter(f, header)  # 创建字典writer
        writer.writeheader()
        # 抓取文章目录和标题
        html = etree.HTML(response)
        li_list = html.xpath('//ul[@class="course-card-list"]/li')
        for i, li in enumerate(li_list):  # 获取索引和值
            title = li.xpath('.//a[@class="item-tt-link"]/@title')[0]
            href = li.xpath('.//a[@class="item-tt-link"]/@href')[0]
            href = "https:" + href
            item = { 
   "title": title, "href": href}
            print(item)
            writer.writerow(item)
        print("保存成功...")

save_csv()

运行程序,文件会存储再当前目录下。
在这里插入图片描述

存储为excel文件

代码如下:

import requests
from lxml import etree
import openpyxl

url = 'https://ke.qq.com/course/list/?mt=1001'
headers = { 
   "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
                         "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36"}
# 获取放回的html源代码字符串
response = requests.get(url, headers=headers).text
def save_excel():  # 保存为excel文件
    wb = openpyxl.Workbook()  # 创建工作铺
    ws = wb.active  # 创建工作表
    # 写入表头
    ws["A1"] = "课程标题"
    ws["B1"] = "课堂链接"

    # 抓取文章目录和标题
    html = etree.HTML(response)
    li_list = html.xpath('//ul[@class="course-card-list"]/li')
    for i, li in enumerate(li_list):  # 获取索引和值
        title = li.xpath('.//a[@class="item-tt-link"]/@title')[0]
        href = li.xpath('.//a[@class="item-tt-link"]/@href')[0]
        href = "https:" + href
        ws.cell(row=i+2, column=1, value=title)  # 写入行,列所对应的值
        ws.cell(row=i+2, column=2, value=href)
    wb.save("./QQ课堂.xlsx")


save_excel()

运行程序,打开文件
在这里插入图片描述

保存在mongodb数据库中

代码如下

import requests
import pymongo
from lxml import etree
def save_mongo():  # 将数据存储到monggodb数据库
    client = pymongo.MongoClient()  # 连接数据库
    db = client["ke"]  # 创建数据库
    collection = db["ke_content"]
    items = []
    html = etree.HTML(response)
    li_list = html.xpath('//ul[@class="course-card-list"]/li')
    for i, li in enumerate(li_list):  # 获取索引和值
        title = li.xpath('.//a[@class="item-tt-link"]/@title')[0]
        href = li.xpath('.//a[@class="item-tt-link"]/@href')[0]
        href = "https:" + href
        item = { 
   "title": title, "href": href}
        items.append(item)  # 将每个item添加到items列表中
    collection.insert_many(items)  # 插入多条数据
    for content in collection.find():  # 查看数据库中的数据
        print(content)

运行代码,可以在终端中查看数据库中的内容
在这里插入图片描述
也可以直接进入数据库中查看,打开终端,进入数据库。查看即可
在这里插入图片描述

小结

最后把所有代码整理一遍,大家只需要按需所用即可,只需要修改部分代码就好了。

import pymongo
import requests
from lxml import etree
import openpyxl  # 保存为excel文件
import csv  # 保存为csv文件
url = 'https://ke.qq.com/course/list/?mt=1001'
headers = { 
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
"AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36"}
# 获取放回的html源代码字符串
response = requests.get(url, headers=headers).text
def save_txt():  # 保存为txt文件
f = open("./ke.txt", "w", encoding="utf8")
# 抓取文章目录和标题
html = etree.HTML(response)
li_list = html.xpath('//ul[@class="course-card-list"]/li')
for li in li_list:
title = li.xpath('.//a[@class="item-tt-link"]/@title')[0]
href = li.xpath('.//a[@class="item-tt-link"]/@href')[0]
href = "https:" + href
f.write(f'{title}-->{href}\n')
f.close()
def save_csv():  # 保存为csv文件
with open("ke.csv", "w", encoding="utf8", newline='') as f:
header = ["title", "href"]
writer = csv.DictWriter(f, header)
writer.writeheader()
# 抓取文章目录和标题
html = etree.HTML(response)
li_list = html.xpath('//ul[@class="course-card-list"]/li')
for i, li in enumerate(li_list):  # 获取索引和值
title = li.xpath('.//a[@class="item-tt-link"]/@title')[0]
href = li.xpath('.//a[@class="item-tt-link"]/@href')[0]
href = "https:" + href
item = { 
"title": title, "href": href}
print(item)
writer.writerow(item)
print("保存成功...")
def save_excel():  # 保存为excel文件
wb = openpyxl.Workbook()  # 创建工作铺
ws = wb.active  # 创建工作表
# 写入表头
ws["A1"] = "课程标题"
ws["B1"] = "课堂链接"
# 抓取文章目录和标题
html = etree.HTML(response)
li_list = html.xpath('//ul[@class="course-card-list"]/li')
for i, li in enumerate(li_list):  # 获取索引和值
title = li.xpath('.//a[@class="item-tt-link"]/@title')[0]
href = li.xpath('.//a[@class="item-tt-link"]/@href')[0]
href = "https:" + href
ws.cell(row=i+2, column=1, value=title)  # 写入行,列所对应的值
ws.cell(row=i+2, column=2, value=href)
wb.save("./QQ课堂.xlsx")
print("保存成功")
def save_mongo():  # 将数据存储到monggodb数据库
client = pymongo.MongoClient()  # 连接数据库
db = client["ke"]  # 创建数据库
collection = db["ke_content"]
items = []
html = etree.HTML(response)
li_list = html.xpath('//ul[@class="course-card-list"]/li')
for i, li in enumerate(li_list):  # 获取索引和值
title = li.xpath('.//a[@class="item-tt-link"]/@title')[0]
href = li.xpath('.//a[@class="item-tt-link"]/@href')[0]
href = "https:" + href
item = { 
"title": title, "href": href}
items.append(item)
collection.insert_many(items)  # 插入多条数据
for content in collection.find():  # 遍历在这个集合中的数据
print(content)
if __name__ == '__main__':
save_mongo()  # 调用相应的方法即可

如果有什么不足之处请指出,我会加以改进,共同进步!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/125042.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 学会用 Mysql show processlist 排查问题

    学会用 Mysql show processlist 排查问题

  • 大数据开发工程师需要具备哪些技能?[通俗易懂]

    目录:1.典型需求2.40K以上专家必备技能3.项目中的迷宫场景部件制作4.Hadoop生态核心原理一、典型需求(互联网公司)二、40K以上专家必备技能三、大数从业者角色分类四、Hadoop生态核心原理1.大数据整体画像 数据流程 数据技术 2.大数据平台整体画像 大数据平台逻辑划…

  • matlab画三维图如何更改颜色,MATLAB画三维图像「建议收藏」

    matlab画三维图如何更改颜色,MATLAB画三维图像「建议收藏」姓名:刘肖珊学号:19021210919【嵌牛导读】:matlab是一款功能强大的编程软件,三维图像常用,文章介绍matlab如何画三维图像【嵌牛鼻子】:MATLAB、三维图【嵌牛提问】:matlab如何画三维图像?【嵌牛正文】:当我们学习surface命令时,已经看到了三维作图的一些端倪。在matlab中我么可以调用mesh(x,y,z)函数来产生三维图像。首先,我们用z=cos(x)sin(…

    2022年10月11日
  • sqlserver2012安装教程win10_sql2017安装教程图解

    sqlserver2012安装教程win10_sql2017安装教程图解推荐使用msdn我告诉你网站进行下载,SQLServer2012下载地址先选择服务器如何选择SQLServer2012选择自己要的版本,如果32位机器找x86的版本,如果是64位的请选择x64版本。安装好进入,系统会自动加载ios,找到安装程序,双击打开选择安装然后选择全新的sqlserver独立安装选择安装然后选择全新的sqlserver独立安装…

  • c语言中位运算符_位运算符的用法

    c语言中位运算符_位运算符的用法C语言的运算符是一个很有意思的东西,运用起来可以解决很多麻烦的事,但是想要灵活应用也有一定的难度,总结一下c语言运算符的用法和一些常用技巧.一.C语言位运算符简介C语言的位运算符有六种,分别是:>>  右移运算符&   按位与运算符|   按位或运算符^   按位异或运算符~   按位取反运算符这些运算符都是对于基本数据类型的二进制位进行操作的,这

  • td-scdma/wcdma是什么意思_CDMA频段

    td-scdma/wcdma是什么意思_CDMA频段1.概述比较项目:核心网部分的异同接入网部分的差别业务提供上的异同2.核心网比较TD-SCDMA技术被3GPPR4采纳,因此在R4的核心网部分,TD-SCDMA与WCDMA没有差异:ØTD-SCDMA在核心网方面所用到的接口和主要协议与WCDMA一致。Ø在3GPP核心网中所提供的业务并没有将TD-SCDMA同WCDMA进行区分。Ø

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号