Получить все ссылки на странице в css селекторе 'a' для каждого класса 'r' - PullRequest
0 голосов
/ 26 марта 2020

Я использую селен в python, чтобы очистить все релевантные URL-адреса из поиска Google.

Я понимаю, что если я хотел бы иметь список URL-адресов в одном классе, я могу сделать следующее:

div = driver.find_element_by_class_name('r')
name = div.find_elements_by_css_selector('a')

Что мне действительно нужно, так это URL в href для каждый класс «г» на странице Google. Я попробовал это:

div = driver.find_elements_by_class_name('r')
name = div.find_element_by_css_selector('a')

Но я получаю эту ошибку: AttributeError: 'list' object has no attribute 'find_element_by_css_selector'

Как я могу перебрать классы и получить один URL?

Ответы [ 2 ]

0 голосов
/ 26 марта 2020

find_element_by_class_name вернет список elements, а элемент списка не имеет .find_element_by_css_selector объекта реализации. Итак, вы получаете это сообщение.

Если вы хотите получить элемент ссылки для каждого элемента div, обновите свой код, как показано ниже.

divs = driver.find_elements_by_class_name('r')
for div in divs:
    href= div.find_element_by_css_selector('a').get_attribute('href')
    print(href)

Вы можете использовать xpath, как показано ниже

links= driver.find_elements_by_xpath("//div[@class='r']//a[h3]")
for link in links:
    href= link.get_attribute('href')
    print(href)

0 голосов
/ 26 марта 2020

driver.find_elements_by_class_name возвращает список веб-элементов, а не единичный объект типа WebElement. Может быть, попробуйте следующее:

for div in driver.find_elements_by_css_selector('a .r'):
    print(div.get_attribute('href'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...