Профиль пользователя заблокирован в режиме deactivate сроком с 12 апреля 2022 г. и навсегда по причине: спам
Ответы пользователя по тегу Beautiful Soup
  • Как ответ двух циклов вывести в красивые списки?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    html = '''
    <tbody>
    <tr>
        <td>Содержимое 1</td>
        <td>Содержимое 2</td>
    </tr>
    <tr>
        <td>Содержимое 3</td>
        <td>Содержимое 4</td>
    </tr>
    </tbody>
    '''
    
    soup = BeautifulSoup(html, 'lxml')
    
    result = []
    tr_elems = soup.find_all('tr')
    for tr in tr_elems:
        result.append([td.text for td in tr.find_all('td')])
    
    # [['Содержимое 1', 'Содержимое 2'], ['Содержимое 3', 'Содержимое 4']]
    Ответ написан
    9 комментариев
  • Python, beautifulsoup 4, альтернатива xpath?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    Регулярным выражением:
    import re
    
    soup.find_all('a', href=re.compile(r'nearLocation'))

    Или select:
    soup.select('a[href*=nearLocation]')
    Ответ написан
    6 комментариев
  • Как спрасить динамическую таблицу на Python?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    Плохо парсил
    In [6]: len(html.xpath('.//table[@id="proxylisttable"]/tbody/tr'))
    Out[6]: 100

    requests, lxml
    Если сильно нужно использовать selenium, то отключи javascript
    Ответ написан
    2 комментария
  • Парсер выдает кашу?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    Что за? Зачем вы открываете страницу с Selenium, а парсите с BS4? Это какой-то особый вид извращений?
    Страницу нужно прокрутить вниз, что-бы прогрузились все элементы.
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

    Возможно скроллить нужно будет в цикле несколько раз, если за один мах грузятся не все элементы.
    Selenium умеет в чудесные xpath, а вы пытаетесь собрать элементы по динамичным атрибутам. Не надо так. Надо, примерно, вот так:
    images = driver.find_elements_by_xpath('.//img[contains(@class, "image")][@srcset]')

    Вот так тоже не делайте:
    driver.get(url)
    time.sleep(15)

    Код дальше driver.get() не сдвинется, пока страница не будет загружена, так что вам не нужно ничего ждать. А если есть элементы, которые грузятся уже после того, как основная страница загружена, то нужно использовать ожидания.
    Ответ написан
    Комментировать
  • Извлечение контента с помощью BeautifulSoup и Python?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    Если вам так уж сильно хочется спарсить именно эту дату, а не нормальную, как я предложил тут, то что-бы парсить её без счетчика просмотров делайте это так:
    >>> soup.find('div', {'class': 'nl__details nl__details_left'}).span.text
    '3 Сентября, 23:30'

    Но я вам настоятельно рекомендую парсить нормальную дату, что-бы избежать любых возможных проблем.
    Если и этот вариант вам по какой-то причине не нравится и вы и дальше будете пытаться парсить дату в том виде, в котором она сейчас, то вам нужны регулярные выражения. Т.к. насколько я понимаю на сайте несколько типов отображения дат, то и регулярное выражение должно покрывать их все.
    Можете зайти на regex101, в поле TEST STRING закиньте примеры ваших дат, а в REGULAR EXPRESSION пишите регулярное выражение, результат будете получать сразу и наглядно видеть в правильном направлении идёте, или нет. Вот тут можно посмотреть синтаксис регулярных выражений, сильно сложного ничего нет.

    Ну и совсем упоротый вариант, отвечающий конкретно на ваш вопрос:
    >>> date = '3 Сентября, 23:30 721'
    >>> date = ' '.join(date.split(' ')[:-1])
    >>> date
    '3 Сентября, 23:30'
    Ответ написан
    1 комментарий
  • Как сгенерировать ссылки в Python для парсинга всех страниц?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    pattern = "https://www.betexplorer.com/results/soccer/?year={}&month={}&day={}"
    
    for year in range(2016, 2020):
        for month in range(1, 13):
            for day in range(1, 32):
                url = pattern.format(year, month, day)
                print(url)


    С проверкой сильно не заморачивайтесь, сайт возвращает 404 статус, если страницы нет, на это и делайте проверку. Примерно так:

    r = requests.get(url)
    if r.status_code == 404:
        print("This page does not exists")
    Ответ написан
    1 комментарий
  • Как добыть информацию этого тега?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    Кому-то двойной цикл не помогает, а кому-то и одной строки может хватить:
    print(soup.find('span', {'class': 'searchBar__mediaTabTextValue searchBar__mediaTabTotal'}).get_text())

    >>> 75

    А вообще, с таким вот:
    Нужно рабочее решение !!!!

    На соседний ресурс иди.

    А с такими вот предъявами:
    не принимаю и даю жалобу.

    Иди к маме, а не сюда. Тут ты в первую очередь просишь.
    Ответ написан
    Комментировать
  • Как находить теги со сложными именами классов?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    var_name = soup.find('div', {'class': 'mediaMiniCard__opened _closed _tooltip _position_topLeft'})

    Вместо div тот тег, к которому относится этот класс.
    Ответ написан