Почему команда Selenium driver.find возвращает список в два раза больше, чем должно быть? - PullRequest
0 голосов
/ 19 февраля 2020

Я использую Selenium, чтобы сделать некоторый веб-просмотр URL. Однако я заметил, что Python вставляет пробелы между URL.

Это возвращается мне:

['uk.linkedin.com ›pauljgarner',

'',

'uk.linkedin.com ›namakarskiy',

',

' uk.linkedin.com› danny-butler-62834777 ',

' ',

uk.linkedin.com ›ksrameshkanth'

Когда это должно быть:

['uk. linkedin.com ›pauljgarner ',

' uk.linkedin.com› namakarskiy ',

' uk.linkedin.com ›danny-butler-62834777 ',

' uk.linkedin.com ›ksrameshkanth '

Мой соответствующий код :

from selenium import webdriver
driver = webdriver.Chrome('/Users/yu/Downloads/chromedriver')
driver.get('https:www.google.com')

##inputting google search##
search_query = driver.find_element_by_name('q')
search_query.send_keys(parameters.search_query)
search_query.send_keys(Keys.RETURN)

##compiling list of linkedin urls##
linkedin_urls = driver.find_elements_by_class_name('iUh30')
linkedin_urls = [url.text for url in linkedin_urls]

linkedin_urls
len(linkedin_urls)
##the above command returns length of 20, when it should be 10##

Почему это происходит и как я могу это исправить? Ничего подобного в интернете не видел

1 Ответ

0 голосов
/ 19 февраля 2020

Я попробовал ваш код и получил столько пробелов, сколько и элементов данных (именно так, как вы указали). Когда я посмотрел на элементы на веб-странице, я обнаружил, что при использовании класса iUh30.

элементы дублируются. Я исправил эту проблему путем поиска родительского элемента div, который имеет класс * 1005. * (с использованием запроса XPath):

Вместо:

linkedin_urls = driver.find_elements_by_class_name('iUh30')

Используйте это:

linkedin_urls = driver.find_elements_by_xpath(".//div[@class='TbwUpd NJjxre']")

Надеюсь, это поможет.

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