我已经用python编写了一个脚本,它能够从网页中获取不同文章的标题,并将它们写入csv文件。由于网站的内容更新非常频繁,我喜欢将新的结果首先附加到csv文件中,那里已经有可用的旧标题列表。你知道吗
我试过:
import csv
import time
import requests
from bs4 import BeautifulSoup
url = "https://stackoverflow.com/questions/tagged/python"
def get_information(url):
response = requests.get(url)
soup = BeautifulSoup(response.content, 'lxml')
for title in soup.select(".summary .question-hyperlink"):
yield title.text
if __name__ == '__main__':
while True:
with open("output.csv","a",newline="") as f:
writer = csv.writer(f)
writer.writerow(['posts'])
for items in get_information(url):
writer.writerow([items])
print(items)
time.sleep(300)
上面的脚本在运行两次时可以在旧结果之后附加新结果。你知道吗
旧数据如下:
A
F
G
T
新数据是W
、Q
、U
。你知道吗
当我重新运行脚本时,csv文件应该如下所示:
W
Q
U
A
F
G
T
如何将新结果首先附加到包含旧数据的现有csv文件中?
在文件的任何地方插入数据,除了在文件末尾,都需要重写整个过程。要做到这一点而不首先将其全部内容读入内存,可以创建一个包含新数据的临时csv文件,将现有文件中的数据附加到该文件中,删除旧文件并重命名新文件。你知道吗
下面是我的意思的示例(使用一个伪get_information()函数来简化测试)。你知道吗
由于要更改表中每个元素的位置,因此需要将表读入内存并重写整个文件,从新元素开始。你知道吗
您可能会发现:(1)将新元素写入新文件;(2)打开旧文件并将其内容附加到新文件;(3)将新文件移到原始(旧)文件名更容易。你知道吗
相关问题 更多 >
编程相关推荐