LINUX.ORG.RU

Не работает поиск по тексту в BeautifulSoup

 , , , ,


0

1

Всем привет!

Мне нужно спарсить один сайт, пытаюсь для этого применить библиотеку BeautifulSoup4 на python.

Более-менее с ней понятно, но не могу заставить работать поиск по тексту супа, т.е. запуск функций find или find_all(text='искомый_текст').

Вот пример моего кода - например, нужно на странице nic.ru найти все элементы, в которых содержится слово «сервер», и вывести их на консоль

import requests
from bs4 import BeautifulSoup

def get_content():
    url = 'https://www.nic.ru'

    header = {
        "accept": "application/json, text/plain, */*",
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36"
    }
    resp = requests.get(url, headers=header)
    if resp.status_code == 200:
            page = BeautifulSoup(resp.text, 'lxml')
 
            pattern = 'сервер'
            elements1 = page.find_all(text=pattern)
            print(elements1)

Данный код на выходе печатает пустое множество [ ], хотя на этой странице слово «сервер» встречается несколько раз.

Как это победить?



Последнее исправление: Garik368 (всего исправлений: 1)

Ответ на: комментарий от emorozov

Мне нужно, он нашёл на странице все элементы, в которых упоминается «сервер».

Например, анализ исследуемой страницы(https://www.nic.ru/) должен мне выдать следующие элементы: [Хостинг и серверы] [Виртуальный сервер VDS/VPS] [Гибридные серверы] [Мощность физического сервера в сочетании с гибкостью управления VDS] [Аренда сервера] [Физический сервер в дата-центре…]

У них могут быть разные теги и классы.

Если find и find_all не ищет по подстроке текста элемента на странице, то как лучше искать?

Garik368
() автор топика
Последнее исправление: Garik368 (всего исправлений: 3)
Ответ на: комментарий от emorozov

ещё есть один вопрос, связанный с этим скриптом - основное время работы занимает не сам парсинг, а долгое выполнение функции requests.get(url, headers=header) - порядка 1,4 секунды. Когда надо обработать несколько тысяч страниц, эти секунды выливаются в десятки минут…

С чем это может быть связано? С сервером, на котором находится сайт, или что-то в моём оборудовании или коде?

Garik368
() автор топика
Последнее исправление: Garik368 (всего исправлений: 1)