Ошибка при выборе зависимого выпадающего меню и выбора опции В Python - PullRequest
0 голосов
/ 24 февраля 2020

Я пытаюсь извлечь ссылки из всех комбинаций выпадающих элементов. У меня есть код ниже, но когда я запускаю код, он выдает ошибку.

url = "https://www.ford.co.uk/owner/my-vehicle/download-your-manual"

from selenium import webdriver
from selenium.webdriver.support.ui import Select
import time

driver = webdriver.Chrome('C:/Users/chromedriver.exe')
driver.get(url)
time.sleep(4)
selectYear = Select(driver.find_element_by_id("odl-selected-year"))

data = []
for yearOption in selectYear.options:
    yearText = yearOption.text
    selectYear.select_by_visible_text(yearText)
    time.sleep(1)

    selectModel = Select(driver.find_element_by_id("odl-selected-model"))
    for modelOption in selectModel.options:
        modelText = modelOption.text
        selectModel.select_by_visible_text(modelText)
        data.append([yearText,modelText])


button = driver.find_element_by_link_text("Select this vehicle")
button.click()
page = driver.page_source
soup = BeautifulSoup(page, 'html.parser')
content = soup.findAll('a',attrs={"class":"odl-download-link"})

links =[]
for i in content:
    links.append(i["href"])

Я не уверен, где я иду не так. Заранее спасибо.

1 Ответ

0 голосов
/ 24 февраля 2020

Первое: мне пришлось добавить

from bs4 import BeautifulSoup

Второе: мне пришлось изменить отступы

Третье: мне пришлось добавить time.sleep (2) перед тем, как получить страницу со ссылками

И наконец: я нажимаю <Back на go назад

И там отображаются ссылки на руководства.

Кстати: иногда страница показывает всплывающее окно при запуске, но я этого не делал попробуйте решить эту проблему

Кстати: мне пришлось проверить

if yearText != 'Year' and modelText != 'Model':

, чтобы пропустить щелчки для этих значений.

url = "https://www.ford.co.uk/owner/my-vehicle/download-your-manual"

from selenium import webdriver
from selenium.webdriver.support.ui import Select
import time
from bs4 import BeautifulSoup

driver = webdriver.Chrome() #'C:/Users/chromedriver.exe')
driver.get(url)
time.sleep(4)
selectYear = Select(driver.find_element_by_id("odl-selected-year"))

data = []
for yearOption in selectYear.options:
    yearText = yearOption.text
    selectYear.select_by_visible_text(yearText)
    time.sleep(1)

    selectModel = Select(driver.find_element_by_id("odl-selected-model"))
    for modelOption in selectModel.options:
        modelText = modelOption.text
        selectModel.select_by_visible_text(modelText)
        if yearText != 'Year' and modelText != 'Model':
            data.append([yearText, modelText])

            #print(data)

            button = driver.find_element_by_link_text("Select this vehicle")
            button.click()
            time.sleep(2)

            page = driver.page_source
            soup = BeautifulSoup(page, 'html.parser')
            content = soup.findAll('a', attrs={"class": "odl-download-link"})

            links =[]
            for i in content:
                links.append(i["href"])

            print(links)

            # go back

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