继续我离开Python的地方

继续我离开Python的地方,python,list,selenium,Python,List,Selenium,我有一个链接列表,我正在每个链接上执行一个特定的功能,该功能需要大约25秒,我使用selenium打开每个链接并获取其页面源代码,然后执行我的功能,但是每当我构建程序并取消构建时,我都必须重新开始 注意:我从不同的网站站点地图获得链接 有没有办法保存我的进度并在以后继续?您应该将链接保存在文本文件中。您还应该将索引号保存在另一个文本文件中,可能会使用0进行初始化 在您的代码中,您可以使用以下方法循环链接: 对于链接中的链接[索引编号:] 在每个循环结束时,将索引号添加到包含索引号的文本文件中。这

我有一个链接列表,我正在每个链接上执行一个特定的功能,该功能需要大约25秒,我使用selenium打开每个链接并获取其页面源代码,然后执行我的功能,但是每当我构建程序并取消构建时,我都必须重新开始

注意:我从不同的网站站点地图获得
链接


有没有办法保存我的进度并在以后继续?

您应该将链接保存在文本文件中。您还应该将索引号保存在另一个文本文件中,可能会使用0进行初始化

在您的代码中,您可以使用以下方法循环链接:

对于链接中的链接[索引编号:]


在每个循环结束时,将索引号添加到包含索引号的文本文件中。这将有助于您从中断处继续。

您应该将链接保存在文本文件中。您还应该将索引号保存在另一个文本文件中,可能会使用0进行初始化

在您的代码中,您可以使用以下方法循环链接:

对于链接中的链接[索引编号:]


在每个循环结束时,将索引号添加到包含索引号的文本文件中。这将有助于您从中断的地方继续。

此代码将起作用。我想你已经有了获取链接的功能。我刚刚使用了一个虚拟链接。 每次成功运行后,您必须删除
链接
文件的内容,并需要将
0
放入
索引
文件中

import time

def _get_links():
    return ["a", "b", "c"]

def _get_links_from_file():
    with open("links") as file:
        return file.read().split(",")


def _do_something(link):
    print(link)
    time.sleep(30)

def _save_links_to_file(links):
    with open("links", "w") as file:
        file.write(",".join(links))
    print("links saved")

def _save_index_to_file(index):
    with open("index", "w") as file:
        file.write(str(index))
    print("index saved")

def _get_index_from_file():
    with open("index",) as file:
        return int(file.read().strip())


def process_links():
    links=_get_links_from_file()
    if len(links) == 0:
        links = _get_links()
        _save_links_to_file(links)
    else:
        links = _get_links_from_file()[_get_index_from_file():]


    for index, link in enumerate(links):
        _do_something(link)
        _save_index_to_file(index+1)

if __name__ == '__main__':
    process_links()

此代码将起作用。我想你已经有了获取链接的功能。我刚刚使用了一个虚拟链接。 每次成功运行后,您必须删除
链接
文件的内容,并需要将
0
放入
索引
文件中

import time

def _get_links():
    return ["a", "b", "c"]

def _get_links_from_file():
    with open("links") as file:
        return file.read().split(",")


def _do_something(link):
    print(link)
    time.sleep(30)

def _save_links_to_file(links):
    with open("links", "w") as file:
        file.write(",".join(links))
    print("links saved")

def _save_index_to_file(index):
    with open("index", "w") as file:
        file.write(str(index))
    print("index saved")

def _get_index_from_file():
    with open("index",) as file:
        return int(file.read().strip())


def process_links():
    links=_get_links_from_file()
    if len(links) == 0:
        links = _get_links()
        _save_links_to_file(links)
    else:
        links = _get_links_from_file()[_get_index_from_file():]


    for index, link in enumerate(links):
        _do_something(link)
        _save_index_to_file(index+1)

if __name__ == '__main__':
    process_links()

我建议您写出指向文件的链接以及上次处理该文件的日期/时间戳。当您向文件写入链接时,您需要确保不会两次写入同一链接。处理完链接后,您还需要在其上加盖日期/时间戳

一旦您有了这个列表,当脚本启动时,您将读取整个列表,并开始处理X天内未处理的链接(或任何您的条件)

步骤:

  • 加载链接文件
  • 从站点地图中刮取链接,与文件中的现有链接进行比较,将任何新链接写入文件
  • 查找X天内未处理的第一个链接
  • 处理该链接,然后在链接旁边写上日期/时间戳,例如

    http://www.google.com,1/25/2019 12:00PM
    
  • 返回步骤3
  • 现在,无论何时结束跑步,流程都会从您停止的地方开始


    注意:只要写下日期就足够了。这取决于您希望刷新列表的频率(每小时一次,等等),或者您是否需要那么多的详细信息。

    我建议您写出指向文件的链接以及上次处理该文件的日期/时间戳。当您向文件写入链接时,您需要确保不会两次写入同一链接。处理完链接后,您还需要在其上加盖日期/时间戳

    一旦您有了这个列表,当脚本启动时,您将读取整个列表,并开始处理X天内未处理的链接(或任何您的条件)

    步骤:

  • 加载链接文件
  • 从站点地图中刮取链接,与文件中的现有链接进行比较,将任何新链接写入文件
  • 查找X天内未处理的第一个链接
  • 处理该链接,然后在链接旁边写上日期/时间戳,例如

    http://www.google.com,1/25/2019 12:00PM
    
  • 返回步骤3
  • 现在,无论何时结束跑步,流程都会从您停止的地方开始


    注意:只要写下日期就足够了。这取决于您希望刷新列表的频率(每小时一次,等等),或者您是否需要那么多的详细信息。

    “是否有办法保存我的进度并在以后继续?”是的,有办法。解决方法之一是将进度保存在一个文件中。当然有。Python本质上是一种图灵完整语言。一种可能的方法是持久化到一个文件。@Code peedient。当我发布我的评论时,我没有看到你的评论:)你说的…我构建程序并取消构建…到底是什么意思。。。?在Selenium接管控制权之前,您可以按照@Code学徒的评论进行操作,但一旦Selenium接管,您就无法进行操作。“有没有办法保存我的进度并在以后继续?”是的,有办法。解决方法之一是将进度保存在一个文件中。当然有。Python本质上是一种图灵完整语言。一种可能的方法是持久化到一个文件。@Code peedient。当我发布我的评论时,我没有看到你的评论:)你说的…我构建程序并取消构建…到底是什么意思。。。?在Selenium接管控制权之前,您可以按照@Code Peedient的注释进行操作,但一旦Selenium接管,您就无法进行操作。OP可能需要保存的不仅仅是一个索引。在程序终止后,列表本身将不再存在,这将使索引变得毫无意义。你的意思是在单独的文件中写入链接并保存我在该文件中留下的位置的索引号,然后爬回该文件?如果你可以将链接保存在不同的文件中以及索引号,那就太好了。这样,您就不必总是阅读站点地图。@Code peedient如果他将链接保存在一个文件中,索引将非常有用。是的,没错。保存链接列表也会有所帮助。你应该编辑你的答案来添加细节。OP可能需要保存的不仅仅是一个索引。在程序终止后,列表本身将不再存在,这将使索引变得毫无意义。你是说将链接写入单独的文件并保存我在该文件上留下的索引号,然后爬回该文件?如果可以保存