热线电话:13121318867

登录
2019-01-25 阅读量: 860
每次while循环开始时迭代下一行

我有一个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存储在一个集合中(所以你不要再获取它们两次)

0.0000
2
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子