我如何每天更新并保存数据到CSV文件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我如何每天更新并保存数据到CSV文件?相关的知识,希望对你有一定的参考价值。

我想从一个网站记录covid数据,并每天更新新的案例。到目前为止,我已经成功地将案例的数量通过scraping放到了文件中,但每天我都必须手动输入日期并运行文件以获得更新的统计数据。我如何编写一个脚本,每天更新CSV,加入新的日期和新的案例数,同时保存旧的案例数以备将来使用?我写了这个并在Virtual Studio Code中运行。

import csv
import bs4
import urllib
from urllib.request import  urlopen as uReq
from urllib.request import Request, urlopen
from bs4 import BeautifulSoup as soup

#For sites that can't be opened due to Urllib blocker, use a Mozilla User agent to get access
pageRequest = Request('https://coronavirusbellcurve.com/', headers = 'User-Agent': 'Mozilla/5.0')
htmlPage = urlopen(pageRequest).read()
page_soup = soup(htmlPage, 'html.parser')
specificDiv = page_soup.find("div", "class": "table-responsive-xl")

TbodyStats = specificDiv.table.tbody.tr.contents
TbodyDates = specificDiv.table.thead.tr.contents

def writeCSV():
    with open('CovidHTML.csv','w', newline= '') as file:
        theWriter = csv.writer(file)  

        theWriter.writerow(['5/8', ' 5/9', ' 5/10',' 5/11',' 5/12'])
        row = []
        for i in range(3,len(TbodyStats),2):
            row.append([TbodyStats[i].text])

        theWriter.writerow(row)


 writeCSV()
答案

如果你想保留csv文件中的旧内容,那就用追加模式打开文件(正如@bfris所指出的正确做法)。

    with open('CovidHTML.csv','a', newline= '') as file:

如果你使用的是Linux,你可以设置一个名为 cron 作业,每天在某个特定的时间调用python脚本。首先,使用 which 命令。

$ which python3 

这给了我

/usr/bin/python3

然后,cron作业会是这样的:在crontab文件中添加这一行。

10 14 * * * /usr/bin/python3 /path/to/python/file.py

在crontab文件中添加这行. 这将在每天下午2:10分调用python脚本。你可以看一下 此处 以了解详情。

如果您使用的是Windows系统,您可以看一下 这个 疑问。

以上是关于我如何每天更新并保存数据到CSV文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 API 数据保存到 csv 文件中?另外如何修复回溯错误?

excel总表中有10000(一万)个数据需要拆分成200个一组的新excel文件并保存成csv格式,怎么做

如何将抓取的 Web 数据保存到多个 csv 文件中

java如何导出csv文件 用户点击导出可以导出到他想保存的地方

如何将抓取数据保存到 CSV 文件中?

将 Json 数据存储到 JSON 文件并保存在 CSV 文件中