Я написал скрипт на python в сочетании с селеном для извлечения различных постов с веб-сайта, используя ротацию прокси.Скрипт пытается только один раз и затем завершается.Теперь я хочу, чтобы мой сценарий продолжал пробовать разные прокси, чтобы получить правильный ответ, пока список не будет исчерпан.
Я думал, что моя реализация верна, но скрипт пытается один раз, а затем завершает работу.Поскольку он не выдает никакой ошибки, я не могу позволить сценарию продолжать попытки, даже если есть предложение try/except
.
import random
from selenium import webdriver
from random import choice
link = 'https://stackoverflow.com/questions/tagged/web-scraping'
proxies = ['103.110.37.244:36022', '180.254.218.229:8080', '110.74.197.207:50632', '1.20.101.95:49001']
def start_script():
random.shuffle(proxies)
proxy_url = choice(proxies)
print("implementing:",proxy_url)
options = webdriver.ChromeOptions()
options.add_argument(f'--proxy-server={proxy_url}')
driver = webdriver.Chrome(options=options)
return driver
def get_links(url):
driver = start_script()
try:
driver.get(url)
items = [item.get_attribute("href") for item in driver.find_elements_by_css_selector(".summary .question-hyperlink")]
for item in items:
print(item)
except Exception:
driver.quit()
get_links(url)
if __name__ == '__main__':
get_links(link)
Поскольку я получаю некоторые вопросы в комментариях, является ли переменная items
возвращает пустое значение, я решил предоставить рабочий код, который доказывает, что переменная в действительности содержит нужный список.
from selenium import webdriver
link = 'https://stackoverflow.com/questions/tagged/web-scraping'
def get_links(url):
driver = webdriver.Chrome()
driver.get(url)
items = [item.get_attribute("href") for item in driver.find_elements_by_css_selector(".summary .question-hyperlink")]
for item in items:
print(item)
if __name__ == '__main__':
get_links(link)
PS The proxy list are the placeholders. They are not working ones.
Как я могуразрешить моему сценарию пытаться использовать разные прокси для получения правильного ответа, пока список не будет исчерпан?