Извлечение данных с веб-страницы с помощью селектора CSS - Selenium Python - PullRequest
0 голосов
/ 20 сентября 2018

Я хочу извлечь некоторые даты с веб-сайта Dell в мой интерес для моих устройств.Я пытался загрузить веб-страницы, используя urllib, но он защищен с помощью капчи, и пока не могу это обойти.Теперь я использую Selenium, чтобы открыть браузер, решить вручную capthca, а затем автоматически открывать страницы и извлекать даты.Проблема в том, что селектор css возвращает некоторые странные элементы вместо желаемого вывода

Мой код:

from selenium import webdriver
import time
driver = webdriver.Chrome()


def scrape(codes):
    dates = []
    for i in range(len(codes)):
        driver.get("https://www.dell.com/support/home/us/en/19/product-support/"
                   "servicetag/%s/warranty?ref=captchasuccess" % codes[i])

    # Solve captcha manually
        if i == 0:
            print("You now have 120\" seconds to solve the captcha")
            time.sleep(120)
            print("120\" Passed")
    # Extract data
        expdate = driver.find_element_by_css_selector("#printdivid > div > div.not-annotated.hover > table:nth-child(3) > tbody > tr > td:nth-child(3)")
        print(expdate)
    driver.close()

codes = ['1FMR762', '15FDBG2', '10V8YZ1']
scrape(codes)

Ожидаемый вывод:

June 22, 2018
October 15, 2017
April 19, 2017

Заданный вывод:

<selenium.webdriver.remote.webelement.WebElement (session="d83af0f7a3a9c79307d2058f863a7ecb", element="0.21873872382745052-1")>
<selenium.webdriver.remote.webelement.WebElement (session="d83af0f7a3a9c79307d2058f863a7ecb", element="0.06836824093097027-1")>
<selenium.webdriver.remote.webelement.WebElement (session="d83af0f7a3a9c79307d2058f863a7ecb", element="0.6642161898702734-1")>

1 Ответ

0 голосов
/ 20 сентября 2018

При просмотре документации API функция find_element_by_css_selector возвращает объект WebElement.См. https://selenium -python.readthedocs.io / api.html .

Содержимое веб-элементов необходимо преобразовать в строку перед печатью, как описано в Python и какполучить текст из объекта Selenium элемента WebElement? .

Так что это должно помочь изменить вашу строку print (expdate) на print (expdate.text).

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