Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 12

Тема: Как в Python найти элемент по имени класса

  1. Как в Python найти элемент по имени класса

    Ребята, привет! Вопрос такой: как в Python найти элемент по имени класса? Я только начинаю разбираться с BeautifulSoup и селениумом, и немного застрял. Был бы благодарен за любой пример кода или объяснение, как это правильно сделать. Может у кого-то было такое?)



  2. Ждём вас в нашем чате в Телеграмм ==>> @pythoneer_chat

    А ТАКЖЕ: Канал о Python, статьи и книги ==>>
    @pythoneer_ru

  3. Привет! Используя BeautifulSoup, это делается довольно просто. Вот пример кода:
    Программный код:
    from bs4 import BeautifulSoup

    html 
    '''<html><body><p class="title">Hello, World!</p></body></html>'''
    soup BeautifulSoup(html'html.parser')
    element soup.find(class_='title')
    print(
    element.text)  # Выведет 'Hello, World!' 
    Для селениума это будет выглядеть так:
    Программный код:
    from selenium import webdriver

    driver 
    webdriver.Chrome()
    driver.get('http://example.com')
    element driver.find_element_by_class_name('title')
    print(
    element.text)
    driver.quit() 

  4. Цитата Сообщение от Olga
    Привет! Используя BeautifulSoup, это делается довольно просто. Вот пример кода:
    Программный код:
    from bs4 import BeautifulSoup

    html 
    '''<html><body><p class="title">Hello, World!</p></body></html>'''
    soup BeautifulSoup(html'html.parser')
    element soup.find(class_='title')
    print(
    element.text)  # Выведет 'Hello, World!' 
    Для селениума это будет выглядеть так:
    Программный код:
    from selenium import webdriver

    driver 
    webdriver.Chrome()
    driver.get('http://example.com')
    element driver.find_element_by_class_name('title')
    print(
    element.text)
    driver.quit() 
    О, спасибо! Всё понятно, теперь разобрался. С селениумом еще не пробовал, но буду тестить.

  5. Да, BeautifulSoup это топ для парсинга HTML. Пример кода уже скинули, так что просто добавлю, что если у тебя много элементов с таким классом, то лучше использовать ‘find_all’.

  6. Цитата Сообщение от Наталия
    Да, BeautifulSoup это топ для парсинга HTML. Пример кода уже скинули, так что просто добавлю, что если у тебя много элементов с таким классом, то лучше использовать ‘find_all’.
    Ага, спасибо за уточнение. Бывает много одинаковых элементов, нужно пробовать find_all тогда.

  7. Селениум иногда не находит элемент, если страница не до конца загрузилась. В таких случаях использую WebDriverWait:
    Программный код:
    from selenium.webdriver.common.by import By
    from selenium
    .webdriver.support.ui import WebDriverWait
    from selenium
    .webdriver.support import expected_conditions as EC

    driver 
    webdriver.Chrome()
    driver.get('http://example.com')

    try:
        
    element WebDriverWait(driver10).until(
            
    EC.presence_of_element_located((By.CLASS_NAME'title'))
        )
        print(
    element.text)
    finally:
        
    driver.quit() 

  8. Цитата Сообщение от IvanMage
    Селениум иногда не находит элемент, если страница не до конца загрузилась. В таких случаях использую WebDriverWait:
    Программный код:
    from selenium.webdriver.common.by import By
    from selenium
    .webdriver.support.ui import WebDriverWait
    from selenium
    .webdriver.support import expected_conditions as EC

    driver 
    webdriver.Chrome()
    driver.get('http://example.com')

    try:
        
    element WebDriverWait(driver10).until(
            
    EC.presence_of_element_located((By.CLASS_NAME'title'))
        )
        print(
    element.text)
    finally:
        
    driver.quit() 
    Точно, про WebDriverWait забыл. Спасиб за напоминание!

  9. Также, в BeautifulSoup стоит помнить, что если у класса есть дефисы, то нужно использовать словарь:
    Программный код:
    from bs4 import BeautifulSoup

    html 
    '''<html><body><p class="title-text">Hello, World!</p></body></html>'''
    soup BeautifulSoup(html'html.parser')
    element soup.find('p'class_='title-text')
    print(
    element.text

  10. Цитата Сообщение от Анюта21
    Также, в BeautifulSoup стоит помнить, что если у класса есть дефисы, то нужно использовать словарь:
    Программный код:
    from bs4 import BeautifulSoup

    html 
    '''<html><body><p class="title-text">Hello, World!</p></body></html>'''
    soup BeautifulSoup(html'html.parser')
    element soup.find('p'class_='title-text')
    print(
    element.text
    Тоже полезно знать! У меня как раз такие случаи бывают. Благодарю.

Страница 1 из 2 12 ПоследняяПоследняя