Извлечь все ссылки из выпадающего списка комбинаций - PullRequest
0 голосов
/ 22 февраля 2020

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

код выглядит следующим образом

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


url = "https://www.cars.com/"

driver = webdriver.Chrome('C:/Users/webdrivers/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])

page = requests.get(url, headers=headers)
soup = BeautifulSoup(page.text, 'html.parser')

content = soup.findAll('div',attrs={"class":"odl-results-container"})

for i in content:
    x = i.findAll(['h3','span'])
    for y in x:
        print(y.get_text())

печать не показывает любые данные. Как я могу получить ссылки на руководства? Заранее спасибо

1 Ответ

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

Вам нужно нажать кнопку для каждой модели автомобиля и года и , а затем получить обработанный HTML источник страницы с веб-драйвера Selenium , а не с запросы.

Добавьте это в свой внутренний l oop:

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"})
for i in content:
    print(i["href"])

Это напечатает:

http://www.fordservicecontent.com/Ford_Content/vdirsnet/OwnerManual/Home/Index?Variantid=6875&languageCode=EN&countryCode=USA&marketCode=US&bookcode=O91668&VIN=&userMarket=GBR
http://www.fordservicecontent.com/Ford_Content/vdirsnet/OwnerManual/Home/Index?Variantid=7126&languageCode=EN&countryCode=USA&marketCode=US&bookcode=O134871&VIN=&userMarket=GBR
http://www.fordservicecontent.com/Ford_Content/vdirsnet/OwnerManual/Home/Index?Variantid=7708&languageCode=EN&countryCode=USA&marketCode=US&bookcode=O177941&VIN=&userMarket=GBR
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...