Python Селен - Получить URL из списка вместо того, чтобы щелкать по нему - PullRequest
1 голос
/ 26 апреля 2020

Я хочу отправить поисковый запрос в список, захватывать / распечатывать URL вместо того, чтобы нажимать на него. Если есть лучший способ, чем использование Selenium, это также будет приемлемо. Пример:

from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
import time

#Choose Browser
driver=webdriver.Chrome()
time.sleep(1)
#Go to url
driver.get("https://coinmarketcap.com/coins/")
#fill out search field
driver.find_element_by_xpath("""/html/body/div/div/div[1]/div[3]/nav/nav/form/div/div/div/input""").send_keys("eth")
#Select first option from dropdown
listbox = Select(driver.find_element_by_xpath("/html/body/div/div/div[1]/div[3]/nav/nav/form/div/div[2]/ul/li[2]/a/span"))
print(listbox.select_by_index(0)) # I want to print the link instead of clicking it

1 Ответ

1 голос
/ 26 апреля 2020

Я обнаружил, что простой ввод текста в поле поиска не показывает выпадающий список. Вот пример кода, который даст вам внутренний HTML раскрывающегося списка. Вы можете изменить xpath, чтобы получить заданный вами элемент c li или проанализировать его соответствующим образом с помощью BeautifulSoup.

driver.get("https://coinmarketcap.com/coins/")
#fill out search field
search_box = driver.find_element_by_xpath("""/html/body/div/div/div[1]/div[3]/nav/nav/form/div/div/div/input""")
search_box.click()
time.sleep(1)
search_box.send_keys("eth")
#Select first option from dropdown
listbox = driver.find_element_by_xpath("//div[@class='cmc-popover__dropdown']")
print(listbox.get_attribute('innerHTML'))

Редактировать: Кроме того, если экземпляр драйвера недостаточно широк, окно поиска не получится т появляются. Попробуйте открыть его максимально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...