首页 > 编程问答 >将新数据附加到 .csv?

将新数据附加到 .csv?

时间:2024-07-21 13:03:04浏览次数:7  
标签:python

每个人!我正在尝试从网站上抓取数据并将任何尚未复制到 .csv 文件的条目添加到 .csv 文件中,但我似乎无法正确编写它。

url = 'www.website.com'

def getInfo():
    global oldMaxValue, oldMaxRow, newInfo
    newInfo = 0
    with open("file.csv", "a") as f:
        data = requests.get(url)
        text = data.text

        newRows = [line.split(',') for line in text.split("\n") if line]
        newMaxValue = max(row[0] for row in newRows)

        for i in newRows:
            if int(i[0]) > int(oldMaxValue):
                f.write(str(i))

        oldMaxValue = newMaxValue

任何指导将不胜感激。非常感谢! :)


以下是使用 Python 将新数据附加到 CSV 文件的方法:

import csv
import requests

url = 'https://www.example.com'  # 将其替换为实际的网址

def get_info():
    """从网站抓取数据并将新条目附加到 CSV 文件。"""

    try:
        response = requests.get(url)
        response.raise_for_status()  # 检查请求是否失败
    except requests.exceptions.RequestException as e:
        print(f"请求错误:{e}")
        return

    text = response.text

    # 查找 CSV 文件中已经存在的最大值(如果文件存在)。
    try:
        with open("file.csv", "r") as f:
            reader = csv.reader(f)
            last_row = list(reader)[-1]  # 获取最后一行
            old_max_value = int(last_row[0])  # 假设第一个元素是之前保存的最大值
    except FileNotFoundError:
        old_max_value = 0  # 如果文件不存在,则从 0 开始

    new_rows = [line.split(',') for line in text.split("\n") if line]

    with open("file.csv", "a", newline='') as f:
        writer = csv.writer(f)
        for row in new_rows:
            if int(row[0]) > old_max_value:
                writer.writerow(row)
                print(f"添加新行:{row}")

if __name__ == "__main__":
    get_info()

说明:

  1. 导入必要的库:
  2. csv 用于处理 CSV 文件。
  3. requests 用于从 URL 获取数据。

  4. 处理错误:

  5. 添加了一个 try...except 块来捕获 requests.get() 期间可能发生的任何错误。这可以防止脚本在出现网络问题或 URL 无效时崩溃。

  6. 读取现有数据:

  7. 使用 csv.reader 读取 CSV 文件,并找到最后一行的第一个元素(假设它是要跟踪的最大值)。

  8. 附加新数据:

  9. 使用 csv.writer 将新行附加到 CSV 文件。 newline='' 参数可防止在行之间出现空行。

  10. 使用 if __name__ == "__main__":

  11. 这可确保仅当直接运行脚本时才调用该函数,而不是在将其作为模块导入时调用。

如何使用:

  1. 使用要抓取的实际网站替换 'https://www.example.com'
  2. 运行脚本: python your_script_name.py
  3. 首次运行该脚本时,它将创建一个名为 file.csv 的文件,并将所有数据写入其中。后续运行只会附加自上次运行后添加的新条目。

这应该可以解决问题,并使的网络抓取和 CSV 附加过程更加健壮。请告诉我是否还有其他问题。

标签:python
From: 17499278

相关文章

  • 【python】Python高阶函数--sorted函数的高阶用法解析与应用实战
    ✨✨欢迎大家来到景天科技苑✨✨......
  • 超详细Python教程——异步任务和定时任务
    异步任务和定时任务在Web应用中,如果一个请求执行了耗时间的操作或者该请求的执行时间无法确定,而且对于用户来说只需要知道服务器接收了他的请求,并不需要马上得到请求的执行结果,这样的操作我们就应该对其进行异步化处理。如果说使用缓存是优化网站性能的第一要义,那么将耗时......
  • Python 中的模 (%) 运算符如何处理负数?
    %运算符在Python中到底是如何工作的,特别是在涉及负数时?例如,为什么-5%4求值为3,而不是-1?在Python中,模运算符(%)遵循以下规则:a%b=a-(b*floor(a/b))其中:a是被除数。......
  • 如何使用 python 更新设备孪生?
    我目前正在尝试使用python更新设备孪生中的属性。但由于SSL错误而无法执行此操作。下面是代码fromazure.iot.hubimportIoTHubRegistryManagerimportcertifiimportssl#ConnecttoIoTHubandsendmessagetodeviceCONNECTION_STRING="HostName=iothub-j......
  • 【Python将字符串连接在一起】
    当然,Python是一个功能丰富且灵活的语言,有许多技巧和最佳实践可以帮助你更有效地编写代码。以下是一些常见的Python技巧:列表推导式(ListComprehensions):这是一种简洁的构建列表的方法。它比使用循环更加清晰和Pythonic。[x*2forxinrange(5)]#输出:[0,2,4,6,......
  • 我心中的王者:Python-第2章 认识变量与基本数学运算
    我心中的王者:Python-第2章认识变量与基本数学运算本章将从基本数学运算开始,一步一步讲解变量的使用与命名,接着介绍Python的算术运算。2-1用Python做计算假设读者到麦当劳打工,一小时可以获得120元时薪,如果想计算一天工作8小时,可以获得多少工资?我们可以用计算器执行“1......
  • 【Dison夏令营 Day 25】用Python写个2048
    在本文中,我们将用python代码和逻辑来设计一款你经常在智能手机上玩的2048游戏。如果您对该游戏不熟悉,强烈建议您先玩一下该游戏,以便了解其基本功能。如何玩2048.NET?1.有一个4*4的网格,可以填入任何数字。一开始,随机填入两个2的单元格。其余单元格为空。我们......
  • python入门基础——新手必看
    前言随着人工智能,大数据的发展。python是当前时代最流行,可以在数据处理、web开发、人工智能等多个领域。它的语法简洁、开发效率高、可移植性强,并且可以和其他变成语言(比如C++)轻松衔接,本文主要讲述一些python的变量,基本数据类型,输入、输出,数据类型的转换,运算符等一些必需的......
  • python中逗号运算符的含义
    我理解了python中逗号运算符的简单概念。例如,x0,sigma=0,0.1表示x0=0,sigma=0.1。但我获得了一个代码,其中有一行如下所示。y,xe=np.histogram(np.random.normal(x0,sigma,1000))其中y和xe的输出如下。yOut[10]:array([3,17,58,136,216,25......
  • 【科大讯飞笔试题汇总】2024-07-20-科大讯飞秋招提前批(研发岗)-三语言题解(Cpp/Java/
    ......