Напишите свой комментарий и используя его как основу для своего ответа:
Чтобы уточнить, я хочу написать al oop, который вводит каждую ссылку и извлекает элемент за тегом, для пример
Откройте новое окно или запустите новый сеанс драйвера, чтобы проверить ссылки в результатах. Затем используйте правило для извлечения нужного текста. Вы можете повторно использовать существующий сеанс драйвера, если сначала извлечете все href
или создадите новую вкладку по мере получения каждой ссылки на результат.
for link in links:
href = link.get_attribute('href')
print(href)
results.append(href)
extractor = webdriver.Chrome(executable_path=...) # as above
for result in results:
extractor.get(url)
section_you_want = extractor.find_elements_by_xpath(...) # or whichever set of rules
# other code here
extractor.close()
Вы можете настроить правила для использования с базой find_element()
или find_elements()
искателей, а затем перебирайте их, пока не получите результат (лучше всего проверять наличие элемента, длину текста или что-то разумное и полезное). Каждое из правил представляет собой кортеж, который может быть передан базовой функции поиска:
from selenium.webdriver.common.by import By # see the docs linked above for the available `By` class attributes
rules = [(By.XPATH, '//h3/p'),
(By.ID, 'summary'),
(By.TAG_NAME, 'div'),
... # etc.
]
for url in results:
extractor.get(url)
for rule in rules:
elems = extractor.find_elements(*rule) # argument unpacking
if not elems:
continue # not found, try next rule
print(elems[0].getText())
break # stop after first successful "find"
else: # only executed if no rules match and `break` is never reached, or `rules` list is empty
print('Could not find anything for url:', url)