Борьба с очисткой данных - PullRequest
0 голосов
/ 05 марта 2019

https://www.solopress.com/business-cards/economy/

Использование Python Selenium.Я пытаюсь собрать данные о ценах в таблице ниже.До сих пор я работал над циклом выбора размера.но я не могу понять, как проходить через другие селекторы (печатные стороны и т. д.).Кажется, ничто не имеет уникального идентификатора.

Размер Xpath

//*[@id="options"]/div/a/span[2]

Печатные стороны Xpath

//*[@id="options"]/div/a/span[2]

Это код, который я использовал для циклического перебора размеровСелектор, который работает.

def nextSize():
    global c
    global tablecounter
    global cellnum

    c = 2
    global dropdownSize
    dropdownSize = driver.find_elements_by_xpath('//*[@id="options"]/div/div/ul/li/ul/li/div')
    for i in dropdownSize:
        driver.implicitly_wait(10)
        time.sleep(5)
        tableExtractor()
        c = str(c)
        driver.find_element_by_xpath('/html/body/div[2]/div[1]/div[1]/div[1]/div[2]/form/div[3]/div/a/span[3]/b').click()
        time.sleep(5)
        op = '//*[@id="options"]/div/div/ul/li/ul/li[%s]/div' % c
        try:
            getSize = driver.find_element_by_xpath(op)
            sizeName = getSize.get_attribute('innerHTML')
            sizeName = sizeName.lstrip()
            sizeName = sizeName.rstrip()
            print sizeName
            ws.cell(row=cellnum,column=1).value = sizeName
            ws.cell(row=cellnum,column=2).value = sideName
            cellnum += 1
        except:
            break
        try:
            driver.find_element_by_xpath(op).click()
            c = int(c)
            c += 1
        except:
            driver.find_element_by_xpath('/html/body/div[2]/div[1]/div[1]/div[1]/div[2]/form/div[3]/div/a/span[3]/b').click()
            break

nextSize()

1 Ответ

0 голосов
/ 05 марта 2019

Похоже, что оба элемента могут быть идентифицированы следующими xPaths, поскольку они имеют разные innerHTML:

//*[@class="select2-result-label ui-select-choices-row-inner" and text()[contains(., "Single Sided")]]    

И

//*[@class="select2-result-label ui-select-choices-row-inner" and text()[contains(., "Double Sided")]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...