Хобрук: Ваш путь к мастерству в программировании

Получить все ссылки на странице в селекторе css «a» для каждого класса «r»

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

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

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

На самом деле мне бы хотелось, чтобы URL-адрес в href для каждого класса «r» на странице 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-адрес?


Ответы:


1

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

for div in driver.find_elements_by_css_selector('a .r'):
    print(div.get_attribute('href'))
26.03.2020

2

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)

26.03.2020
Новые материалы

Мой процесс подачи заявки в Школе программного обеспечения и дизайна Тьюринга
Мой последний пост на Medium был в конце августа, и в нем я пообещал написать еще раз, рассказывая историю моего процесса подачи заявки в Школу программного обеспечения и дизайна Тьюринга ...

Генерация ваших собственных удивительных QR-кодов с использованием Python
QR-код (код быстрого ответа) — это разновидность матричных штрих-кодов (или двумерных штрих-кодов), изобретенных в 1994 году японской автомобильной компанией Denso Wave . Штрих-код —..

Прогресс в технологии Трансформеров часть 3
Многомасштабный управляющий сигнальный преобразователь для бесфазного синтеза движения (arXiv) Автор: Линтао Ван , Кун Ху , Лей Бай , Юй Дин , Ваньли Оуян , Чжиюн Ван . Аннотация:..

Представляем поддержку компонентов Vue.js. Мгновенный HMR и многое другое.
Хотя у FuseBox уже был плагин Vue, он был базовым и не имел многих функций, которые делали работу с Vue.js такой приятной. Однако с этим выпуском мы рады сообщить, что в FuseBox..

Приключения в Javascript, часть 1
Я продолжаю думать о том, чтобы писать больше, но чем больше я думаю об этом, тем меньше я это делаю. Итак, сегодня я перестал думать и начал писать. Отсюда можно только спускаться… В..

Понимание дженериков в TypeScript: подробное руководство
Введение TypeScript, строго типизированный надмножество JavaScript, хорошо известен своей способностью улучшать масштабируемость, удобочитаемость и ремонтопригодность приложений. Одной из..

Учебные заметки JavaScript Object Oriented Labs
Вот моя седьмая неделя обучения программированию. После ruby ​​и его фреймворка rails я начал изучать самый популярный язык интерфейса — javascript. В отличие от ruby, javascript — это более..