Получить следующий элемент для каждого элемента вызывается функция

#python-3.x #list

#python-3.x #Список

Вопрос:

 app = Flask(__name__)

options = webdriver.ChromeOptions()
options.add_argument('headless')
driver = webdriver.Chrome('C:/Users/msdfs/Downloads/cd79/chromedriver.exe', options=options)

driver.implicitly_wait(10)
links = ['http://www.dia.net/hottest/AllTime',
'http://www.dia.net/subcategory/ua7oawncuaxoa',
'http://www.dia.net/subcategory/ua7oawncuaxoa/test',
'http://www.edia.net/subcategory/ua7oawncuafou',
'http://www.dia.net/subcategory/ua7oawncuatla',
'http://www.dia.net/subcategory/ua7oawncuatla/testr',
'http://www.dia.net/subcategory/ua7oawncua7oc']

global go
go = iter(links)

@app.route('/')
def get_jokes():
    driver.get(next(go))
    facts = driver.find_elements_by_tag_name('p')
    mylist = []
    for fact in facts:
        mylist.append(fact.text)
    return render_template('facts.html', s=mylist)
  

Как заставить шаблон извлекать следующий URL-адрес в списке URL-адресов при каждом вызове функции? Этот метод, конечно, не работает. Это один из многих, которые я пробовал. Просто чтобы уточнить, индекс списка должен увеличиваться на 1 при каждом вызове функции.

Ответ №1:

Правильный способ сделать это так.

 app = Flask(__name__)

options = webdriver.ChromeOptions()
options.add_argument('headless')
driver = webdriver.Chrome('C:/Users/msdfs/Downloads/cd79/chromedriver.exe', options=options)

driver.implicitly_wait(10)
links = ['http://www.dia.net/hottest/AllTime',
'http://www.dia.net/subcategory/ua7oawncuaxoa',
'http://www.dia.net/subcategory/ua7oawncuaxoa/test',
'http://www.edia.net/subcategory/ua7oawncuafou',
'http://www.dia.net/subcategory/ua7oawncuatla',
'http://www.dia.net/subcategory/ua7oawncuatla/testr',
'http://www.dia.net/subcategory/ua7oawncua7oc']




curr_index = 0
@app.route('/')
def get_jokes():
    global curr_index
    driver.get(links[curr_index])
    facts = driver.find_elements_by_tag_name('p')
    curr_index  = 1
    mylist = []
    for fact in facts:
        mylist.append(fact.text)
    return render_template('facts.html', s=mylist)