Доступ к SubID внутри идентификатора с помощью Selenium Webdriver - PullRequest
0 голосов
/ 30 марта 2020

Click here to view the image

Пожалуйста, нажмите на ссылку выше, чтобы посмотреть изображение. Я пытаюсь получить доступ к дополнительному идентификатору внутри идентификатора с помощью веб-драйвера selenium, то есть dealTitle для соответствующего ProductID. Я использую следующий код. Это не дает правильного dealTitle, так как я продолжаю изменять ProductID.

arrow = driver.find_element_by_id(ProductID and 'dealTitle')
Title = arrow.text
URL = arrow.get_attribute('href')

Ниже приводится вывод, который я получаю, когда использую его в для l oop для перебора различных идентификаторов продуктов. Название продукта и URL продолжают повторяться!

101_dealView_0
APEMAN 1440P&1080P Dual Dash Cam, 1520P max, Front and Rear...
https://www.amazon.com/APEMAN-Driving-Recorder-G-Sensor-Recording/dp/B07GRV85NP/ref=gbps_tit_s-5_639a_d3da6663?smid=A2K169HGDCXGK7&pf_rd_p=dfe4fba9-3c53-4552-8972-97cb24cf639a&pf_rd_s=slot-5&pf_rd_t=701&pf_rd_i=gb_main&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=JBAA8GFKKGBK31GVJ0SH
<selenium.webdriver.remote.webelement.WebElement (session="db1e2e6097ffb6e2bcb92afe79c1ebbc", element="9d98fd9c-eb96-4366-b1eb-dfdad0302e26")>

101_dealView_1
APEMAN 1440P&1080P Dual Dash Cam, 1520P max, Front and Rear...
https://www.amazon.com/APEMAN-Driving-Recorder-G-Sensor-Recording/dp/B07GRV85NP/ref=gbps_tit_s-5_639a_d3da6663?smid=A2K169HGDCXGK7&pf_rd_p=dfe4fba9-3c53-4552-8972-97cb24cf639a&pf_rd_s=slot-5&pf_rd_t=701&pf_rd_i=gb_main&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=JBAA8GFKKGBK31GVJ0SH
<selenium.webdriver.remote.webelement.WebElement (session="db1e2e6097ffb6e2bcb92afe79c1ebbc", element="018e389a-1367-4b91-a395-931a9b6892c8")>

101_dealView_2
APEMAN 1440P&1080P Dual Dash Cam, 1520P max, Front and Rear...
https://www.amazon.com/APEMAN-Driving-Recorder-G-Sensor-Recording/dp/B07GRV85NP/ref=gbps_tit_s-5_639a_d3da6663?smid=A2K169HGDCXGK7&pf_rd_p=dfe4fba9-3c53-4552-8972-97cb24cf639a&pf_rd_s=slot-5&pf_rd_t=701&pf_rd_i=gb_main&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=JBAA8GFKKGBK31GVJ0SH
<selenium.webdriver.remote.webelement.WebElement (session="db1e2e6097ffb6e2bcb92afe79c1ebbc", element="7b86fe59-00b6-4dc5-9c7d-5920aa8184d8")>

1 Ответ

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

Сначала вы должны найти ProductID, а затем выполнить поиск dealTitle ie

image = driver.find_element_by_id('100_dealView_0').find_element_by_id('dealImage')

print('href:', image.get_attribute('href'))

title = driver.find_element_by_id('100_dealView_0').find_element_by_id('dealTitle')

print('title:', title.text)

или короче

deal = driver.find_element_by_id('100_dealView_0')

image = deal.find_element_by_id('dealImage')

print('href:', image.get_attribute('href'))

title = deal.find_element_by_id('dealTitle')

print('title:', title.text)

Минимальный рабочий пример

import selenium.webdriver

url = 'https://www.amazon.com/international-sales-offers/b/?ie=UTF8&node=15529609011&ref_=nav_cs_gb_intl'

driver = selenium.webdriver.Firefox()
driver.get(url)

for x in range(10):
    deal = driver.find_element_by_id('100_dealView_' + str(x))

    image = deal.find_element_by_id('dealImage')
    print('href:', image.get_attribute('href'))

    title = deal.find_element_by_id('dealTitle')
    print('title:', title.text)

    price = deal.find_element_by_xpath('.//span[contains(@class, "dealPriceText")]')
    print('price:', price.text)

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