У меня есть список URL-адресов, которые мне нужно открыть с помощью selenium, выполнить скрипт и извлечь определенные ссылки.
Что я уже сделал:
import re
from selenium import webdriver
### Variables ###
regexp = re.compile(r'\.[\.a-z]?[\.a-z]?\/')
### Function ###
def get_links():
driver = webdriver.Firefox(executable_path=r'/usr/local/bin/geckodriver')
urls = ['https://www.url1.com.gt/', 'https://www.url2.com.co/', 'https://www.url3.com.pe']
for url in urls:
links = []
target = []
country = re.search(regexp, url).group()
driver.get(url)
driver.execute_script('return document.documentElement.outerHTML')
hrefs = driver.find_elements_by_xpath('//a[@href]')
for href in hrefs:
links.append(href.get_attribute('href'))
for link in links:
if 'string to check' in link:
target.append(link)
return country, target
country, target = get_links()
df = {country: target}
print(df)
ожидаемый результат - это диктат с ключом: страна и значения: ссылки, которые совпадают.
Когда я запускаю этот код, он выполняется правильно, но не перебирает список URL-адресов, он только открывает и возвращает данные первого URL.
Если я помещу инструкцию return вне URL-адреса для URL в l oop, он возвращает данные третьего URL-адреса.
Как получить информацию о все URL в моем списке?