Python и Selen Web Соскоб Ebay раскрывающихся текстовых полей - PullRequest
0 голосов
/ 23 мая 2019

Я пытаюсь вывести текст выпадающего на Ebay. Я хочу вывести текст, а затем цену товара, так как выбраны разные варианты выпадающего меню (вот почему я не хочу очищать список выпадающих значений сразу). У меня есть код, который работает только с 1 выпадающим списком и ценой. Я хочу, чтобы он работал с 2 выпадающими меню +.

from selenium import webdriver
import csv
browser = webdriver.Chrome(executable_path='C:\Users\user\PycharmProjects\seleniumTest\drivers\chromedriver.exe')
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
from selenium.webdriver.support.select import Select



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

browser.get('https://www.ebay.co.uk/itm/Wooden-Box-Coins-Coin-Capsules-Display-Storage-Case-for-Collectible-50-100-New/392274824564')
from selenium.webdriver.support.select import Select

sel = Select(browser.find_element_by_xpath("//select[@id='msku-sel-1']"))

for index in range(1, len(sel.options)):
    # skipping index 0 because it is not valid option
    sel.select_by_index(index)
    print("{}: {}".format(sel.first_selected_option.text, browser.find_element_by_xpath("//span[@id='prcIsum']").text))

Выход =

S: £6.35
L: £10.25

from selenium import webdriver
import csv
browser = webdriver.Chrome(executable_path='C:\Users\userman\PycharmProjects\seleniumTest\drivers\chromedriver.exe')
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
from selenium.webdriver.support.select import Select




browser.get('https://www.ebay.co.uk/itm/Men-3D-Print-Summer-Short-Sleeve-Casual-Slim-Fit-T-Shirts-Graphic-Tee-Shirt-Tops/312545780841?_trkparms=aid%3D333200%26algo%3DCOMP.MBE%26ao%3D1%26asc%3D20171012094517%26meid%3D5e2ad1383afb40b6ad90bb05a8161ad3%26pid%3D100008%26rk%3D2%26rkt%3D12%26sd%3D183776732599%26itm%3D312545780841&_trksid=p2047675.c100008.m2219')

sel = Select(browser.find_element_by_xpath("//select[@id='msku-sel-1']"))
selx = Select(browser.find_element_by_xpath("//select[@id='msku-sel-2']"))

for index in range(1, len(sel.options)):
    # skipping index 0 because it is not valid option
    sel.select_by_index(index)
    print("{}: {}".format(sel.first_selected_option.text, browser.find_element_by_xpath("//span[@id='prcIsum']").text))


for index in range(1, len(selx.options)):
    # skipping index 0 because it is not valid option
    selx.select_by_index(index) & sel.select_by_index(index)

    print("{}: {}".format(selx.first_selected_option.text, browser.find_element_by_xpath("//span[@id='prcIsum']").text),browser.find_element_by_xpath("//select[@id='msku-sel-2']").text)


Traceback (most recent call last):
  File "C:/Users/userman/PycharmProjects/seleniumTest/test/test310.py", line 27, in <module>
    selx.select_by_index(index) & sel.select_by_index(index)
TypeError: unsupported operand type(s) for &: 'NoneType' and 'NoneType'

https://www.ebay.co.uk/itm/UK-Women-Off-Shoulder-Floral-Bodycon-Backless-Ladies-Summer-Beach-Midi-Sun-Dress/254198776097?hash=item3b2f6d8121:m:m9B15WsfVx5zTh_73LlzBGA Я хочу, чтобы вывод был, например, цвет: красный, размер: S Цена: £ 24,99

Ответы [ 2 ]

0 голосов
/ 23 мая 2019

@ cod eisfun1234 , Вы можете использовать опции следующим образом:

for sel_opt,selx_opt in zip(sel.options,selx.options):
     if "Select" not in sel_opt.text:
         print("{}, {}: {}".format(sel_opt.text,selx_opt.text, browser.find_element_by_xpath("//span[@id='prcIsum']").text))

Вот вывод:

# 1 Lion, M: £7.49
# 2 Lion, L: £7.49
# 3 Lion, XL: £7.49
Wolf, XXL: £7.49
Deer, XXXL: £7.49

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

0 голосов
/ 23 мая 2019

Вот логика, которая напечатает желаемый вывод.

url = "https://www.ebay.co.uk/itm/UK-Women-Off-Shoulder-Floral-Bodycon-Backless-Ladies-Summer-Beach-Midi-Sun-Dress/254198776097?hash=item3b2f6d8121:m:m9B15WsfVx5zTh_73LlzBGA"
driver.get(url)
colors = len(driver.find_elements_by_xpath("//select[@name='Colour']/option"))
for colNum in range(colors):
    #select color
    colorEle = driver.find_element_by_xpath("(//select[@name='Colour']/option)[" + str(colNum+1) + "]")
    color = colorEle.text
    colorEle.click()

    # get the sizes
    sizes = len(driver.find_elements_by_xpath("//select[@name='Size']/option"))
    for sizeNum in range(sizes):
        # select color
        sizeEle = driver.find_element_by_xpath("(//select[@name='Size']/option)[" + str(sizeNum + 1) + "]")
        size = sizeEle.text
        sizeEle.click()
        price = driver.find_element_by_xpath("//span[@id='prcIsum']").text
        print ("Color:" + color)
        print( "size:" + size)
        print("Price: "+ price)
        print ("----------------------------------------")

Вот вывод:

Цвет: - Выберите - Размер: - Выберите -

Цена: £ 6,99

Цвет: - Выберите - Размер: 6

Цена: £ 6,99

Цвет: - Выберите - размер: 8

Цена: £ 6,99

Цвет: - Выберите - размер: 10

Цена: £ 6,99

Цвет: - Выберите - Размер: 12

Цена: £ 6,99

Цвет: - Выберите - Размер: 14

Цена: £ 6,99

Цвет: - Выберите - размер: 16

Цена: £ 6,99

Цвет: - Выберите - размер: S

Цена: £ 6,99

Цвет: - Выберите - размер: M

Цена: £ 6,99

Цвет: - Выберите - Размер: L

Цена: £ 6,99

Цвет: - Выберите - размер: XL

Цена: £ 6,99

Цвет: белый Размер: - Выберите -

Цена: £ 6,99

Цвет: белый размер: 6

Цена: £ 6,99

Цвет: белый размер: 8

Цена: £ 6,99

Цвет: белый Размер: 10

Цена: £ 6,99

Цвет: белый Размер: 12

Цена: £ 6,99

Цвет: белый Размер: 14

Цена: £ 6,99

Цвет: белый размер: 16

Цена: £ 6,99

Цвет: белый размер: S

Цена: £ 6,99

Цвет: белый размер: M

Цена: £ 6,99

Цвет: белый Размер: L

Цена: £ 6,99

Цвет: белый размер: XL

Цена: £ 6,99

Цвет: Синий Размер: - Выберите -

Цена: £ 6,99

Цвет: Синий размер: 6

Цена: £ 6,99

Цвет: Синий размер: 8

Цена: £ 6,99

Цвет: Синий Размер: 10

Цена: £ 6,99

Цвет: Синий Размер: 12

Цена: £ 6,99

Цвет: Синий Размер: 14

Цена: £ 6,99

Цвет: Синий размер: 16

Цена: £ 6,99

Цвет: Синий размер: S

Цена: £ 6,99

Цвет: Синий размер: M

Цена: £ 6,99

Цвет: Синий Размер: L

Цена: £ 6,99

Цвет: Синий размер: XL

Цена: £ 6,99

Цвет: светло-зеленый Размер: - Выберите -

Цена: £ 6,99

Цвет: светло-зеленый размер: 6

Цена: £ 6,99

Цвет: светло-зеленый размер: 8

Цена: £ 6,99

Цвет: светло-зеленый Размер: 10

Цена: £ 6,99

Цвет: светло-зеленый Размер: 12

Цена: £ 6,99

Цвет: светло-зеленый Размер: 14

Цена: £ 6,99

Цвет: светло-зеленый размер: 16

Цена: £ 6,99

Цвет: светло-зеленый размер: S

Цена: £ 6,99

Цвет: светло-зеленый размер: M

Цена: £ 6,99

Цвет: светло-зеленый Размер: L

Цена: £ 6,99

Цвет: светло-зеленый размер: XL

Цена: £ 6,99

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