Выскабливание в нескольких классах селен - PullRequest
0 голосов
/ 26 февраля 2020

Я пытаюсь извлечь текст в следующем HTML внутри class="a-size-based-plus a-color-base", используя селеновый веб-драйвер.

Scraping the text inside the blue line

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

from selenium import webdriver
from selenium.webdriver import Chrome
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.expected_conditions import presence_of_element_located

import os
import re  # regular expressions, are imported from python directly
import time
import numpy as np
import pandas as pd
from difflib import SequenceMatcher
BASE_DIR = os.path.dirname(os.path.abspath(__file__))

----- ЗДЕСЬ - некоторый не связанный код --- -

# Find Data
    i = 0
    driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")
    wait = WebDriverWait(driver, 20)
    wait.until(EC.element_to_be_clickable(
        (By.CLASS_NAME, 'xtaqv-root')))
    wait.until(EC.element_to_be_clickable((By.CLASS_NAME, 'extension-rank')))
    wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '[data-src="price"]')))
    time.sleep(5)

    for element in driver.find_elements_by_class_name('xtaqv-root'):   
        # Ratio of similarity
        try:
            item_name = element.find_element_by_tag_name("h2").text
            ratio = SequenceMatcher(None, item_name, key).ratio()
        except:
            item_name = np.nan
            ratio = 0
            pass
        try:
            link = element.find_element_by_css_selector('[data-src="price"]')
            href = link.get_attribute('href')
        except:         
            href = np.nan
        try:
            brand = element.find_element_by_css_selector('.a-size-based-plus.a-color-base')
            brand = brand.text
        except:         
            brand = np.nan  

Последняя попытка, кроме кода, является наиболее важной.

1 Ответ

3 голосов
/ 27 февраля 2020

Посмотрев на HTML, я вижу опечатку в вашем локаторе, такую ​​строку:

brand = element.find_element_by_css_selector('.a-size-based-plus.a-color-base')

Это должно быть size-base, а не size-based, попробуйте это:

brand = element.find_element_by_css_selector('.a-size-base-plus.a-color-base')

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

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