У меня проблема

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome( 
executable_path=r'C:\Users\Michelle\Downloads/chromedriver.exe')
#opens website%
driver.get("https://www.ebay.com")
#selects search bar and enters keys
inputElement = driver.find_element_by_id("gh-ac")
inputElement.send_keys('headphones')
inputElement.send_keys(Keys.ENTER)
Items = driver.find_elements_by_xpath('//*[@id="srp-river-results- 
listing1"]/div/div[2]/a/h3')
Prices = driver.find_elements_by_xpath('//*[@id="srp-river-results- 
listing1"]/div/div[2]/div[4]/div[1]/span')
print(Items[0].text + " : " + Prices[0].text)


driver.close()

Хорошо, я пытаюсь заставить eBay отобразить название и цены товара, но после перехода на страницу и просмотра пути цен они все разные.

//*[@id="srp-river-results-listing1"]/div/div[2]/div[4]/div[1]/span
//*[@id="srp-river-results-listing2"]/div/div[2]
//*[@id="srp-river-results-listing3"]/div/div[2]/div[3]/div[1]/span
 ^ the xpaths 

Как еще заставить их отображать цены, отличные от xpath, есть ли способ использовать элементы?

<span class="s-item__price">$99.00</span> 

Используя такой элемент ^?

-1
Kingdomruler10 9 Дек 2018 в 05:20

1 ответ

Лучший ответ

Я попробовал ваш код и не получил результатов с вашими выражениями xpath, попробуйте следующее с более простыми выражениями селектора CSS:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys


def main():

    driver = webdriver.Chrome(executable_path=r'C:\Users\Michelle\Downloads\chromedriver.exe')
    driver.maximize_window()

    try:
        driver.get("https://www.ebay.com")

        input_element = driver.find_element_by_id("gh-ac")
        input_element.send_keys('headphones')
        input_element.send_keys(Keys.ENTER)

        items = driver.find_elements_by_css_selector('.srp-results .s-item .s-item__title')
        prices = driver.find_elements_by_css_selector('.srp-results .s-item .s-item__price')

        print("# Items: %d" % len(items))
        print("# Prices: %d" % len(prices))

        print(items[5].text + " : " + prices[5].text)

    finally:
        driver.quit()


if __name__ == '__main__':
    main()

Выход:

# Items: 60
# Prices: 60
2PCS New Headphones Earphones With Remote & Mic For Apple iPhone 6S 6 5 5S 4S : $28.97
0
cody 9 Дек 2018 в 03:09