我有一个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))
我需要每次脚本运行时,迭代次数都会增加一行。
有什么帮助吗?
答案 0 :(得分:2)
将您在var name = JObject.Parse(json)["name"].Select(p => p["id"] == "1");
中所做的任何事情捆绑到一个函数中,例如:
Selenium.py
然后在jupyter中使用以下命令导入文件:
def take_screenshot():
# your code here
然后您可以使用以下命令调用该函数:
import Selenium
答案 1 :(得分:1)
首先,您需要将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
也就是说,最好不要在此处使用熊猫,而是逐行读取每一行,将其存储到dict或一组“可见”的guid / url中(这样您就不必提取两次)。