我有一个csv文件,其中包含从流API中删除的链接。我在while循环中有一个脚本(称为'selenium.py'),其中selenium webdriver截取每个url的屏幕截图,然后将其保存在文件中。每分钟都会向csv文件添加更多行。
我的代码是:
df = pd.read_csv('screenshot.csv', header = 0, usecols= ['url','guid'])
while True:
i = 0
for i, row in df.iterrows():
r = driver.get(row['url'])
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
i += 1
for n in range(2):
file_name = str(row['guid'])
fn_1 = "date_stamp{n:0>5}.png".format(n = n)
date_stamp= str(datetime.datetime.now()).split('.')[0]
fn_1 = date_stamp
fn=driver.save_screenshot(file_name+ ' ' + date_stamp + '.png')
sourcepath='/Users/user/'
destinationpath = '/Users/user/Screen'
sourcefiles = os.listdir(sourcepath)
filename= file_name+ ' ' + date_stamp + '.png'
我需要的:
我用这种方式在jupyter中运行脚本:
while True:
%run "Selenium.py"
time.sleep(60.0 - ((time.time() - starttime) % 60.0))
我需要每次脚本运行时,迭代增加一行。
有什么帮助吗?
###########分割线#######
求教了老师,终于解决来了这个问题,这个问题解决
首先,需要将csv的读取移动到while循环中:
df = pd.read_csv('screenshot.csv', header = 0, usecols= ['url','guid'])
while True:
while True:
df = pd.read_csv('screenshot.csv', header = 0, usecols= ['url','guid'])
现在,可以在读取csv时跟踪已读取的行数并使用跳过。即
i = 1
while True:
df = pd.read_csv('screenshot.csv', header=0, usecols=['url','guid'], skiprows=lambda x: x in range(1, i))
for i, row in df.iterrows():
r = driver.get(row['url'])
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
i += 1
也就是说,你可能最好不要在这里使用pandas,并逐行读取每一行,要么将它存储到一个字典中,要么将一个“看到”的guid / url存储在一个集合中(所以你不要再获取它们两次)








暂无数据