Я создал скрипт на python для извлечения заголовков определенных сообщений из разных ссылок веб-страницы. Дело в том, что веб-страница, с которой я пытаюсь поиграть, иногда не дает мне правильного ответа, но я получаю действительный ответ, когда пытаюсь сделать это дважды или трижды.
Я пытался создать цикл таким образом, чтобы скрипт проверял, является ли мой определенный заголовок ничем. Если заголовок ничего не значит, скрипт продолжит цикл 4 раза, чтобы увидеть, может ли он быть успешным. Однако после четвертой попытки для каждой ссылки скрипт переходит к другой ссылке, чтобы повторять ее, пока все ссылки не будут исчерпаны.
Это моя моя попытка:
import time
import requests
from bs4 import BeautifulSoup
links = [
"https://stackoverflow.com/questions/tagged/web-scraping?sort=newest&page=2",
"https://stackoverflow.com/questions/tagged/web-scraping?sort=newest&page=3",
"https://stackoverflow.com/questions/tagged/web-scraping?sort=newest&page=4"
]
counter = 0
def fetch_data(link):
global counter
res = requests.get(link)
soup = BeautifulSoup(res.text,"lxml")
try:
title = soup.select_one("p.tcode").text
except AttributeError: title = ""
if not title:
while counter<=4:
time.sleep(1)
print("trying {} times".format(counter))
counter += 1
fetch_data(link)
else:
counter = 0
print("tried with this link:",link)
if __name__ == '__main__':
for link in links:
fetch_data(link)
Это вывод, который я вижу в консоли в данный момент:
trying 0 times
trying 1 times
trying 2 times
trying 3 times
trying 4 times
tried with this link: https://stackoverflow.com/questions/tagged/web-scraping?sort=newest&page=2
tried with this link: https://stackoverflow.com/questions/tagged/web-scraping?sort=newest&page=2
tried with this link: https://stackoverflow.com/questions/tagged/web-scraping?sort=newest&page=2
tried with this link: https://stackoverflow.com/questions/tagged/web-scraping?sort=newest&page=2
tried with this link: https://stackoverflow.com/questions/tagged/web-scraping?sort=newest&page=2
tried with this link: https://stackoverflow.com/questions/tagged/web-scraping?sort=newest&page=2
tried with this link: https://stackoverflow.com/questions/tagged/web-scraping?sort=newest&page=3
tried with this link: https://stackoverflow.com/questions/tagged/web-scraping?sort=newest&page=4
Мой ожидаемый результат:
trying 0 times
trying 1 times
trying 2 times
trying 3 times
trying 4 times
tried with this link: https://stackoverflow.com/questions/tagged/web-scraping?sort=newest&page=2
trying 0 times
trying 1 times
trying 2 times
trying 3 times
trying 4 times
tried with this link: https://stackoverflow.com/questions/tagged/web-scraping?sort=newest&page=3
trying 0 times
trying 1 times
trying 2 times
trying 3 times
trying 4 times
tried with this link: https://stackoverflow.com/questions/tagged/web-scraping?sort=newest&page=4
PS I used wrong selector within my script so that I can let it meet the condition I've defined above.
Как я могу позволить своему сценарию повторять попытки с каждой ссылкой несколько раз, когда условие не выполняется