CoderCastrov logo
CoderCastrov
Веб-разработка

Парсинг данных с веб-страниц в Python с помощью BeautifulSoup

Парсинг данных с веб-страниц в Python с помощью BeautifulSoup
просмотров
2 мин чтение
#Веб-разработка

При выполнении задач по науке о данных часто возникает необходимость использовать данные, найденные в Интернете. Однако иногда данные, которые вам нужны, могут быть доступны только как часть веб-страницы. В таких случаях вам понадобится использовать технику, называемую парсингом веб-страниц, чтобы получить данные с веб-страницы в формате, с которым вы можете работать в своем анализе. Если вы хотите парсить данные с веб-страницы или, другими словами, извлекать данные с веб-страниц в Python, следуйте за мной примерно минуту:

1- Установка библиотек BeautifulSoup и requests с помощью pip

pip install beautifulsoup4
pip install requests

Библиотека beautifulsoup4 используется для преобразования страницы в виртуальное DOM-дерево, после чего мы можем выполнять запросы к нему с использованием различных параметров, таких как идентификаторы элементов, классы, теги и т. д.

Библиотека requests используется для выполнения HTTP-запросов и получения содержимого HTML-страницы с удаленного сервера.

Например, мы попытались получить количество недвижимости на сайте www.realestate.com для пригорода камба.

2- Смотрите ниже код:

response = requests.get(url="https://www.realestate.com.au/rent/in-{0}/list-1?includeSurrounding=false".format("kambah"))
raw_html = str(response.text)
soup = BeautifulSoup(raw_html, 'lxml')
result = soup.find("div", {"id": "resultsInfo"})

Исходя из приведенного кода, я опишу каждую строку:

1- **requests.get()** выполняет запрос GET для получения всех данных с данной страницы. 2- **raw_html = response.text** получает содержимое страницы в виде строки. 3- **BeautifulSoup(raw_html, ‘lxml’)** передает raw_html в качестве первого параметра, а lxml в качестве второго параметра. Второй параметр необязателен, но целевая страница форматируется на основе него, и BeautifulSoup автоматически предлагает использовать этот параметр в конструкторе. По умолчанию мы используем 'html.parser' в качестве второго параметра. Наконец, BeautifulSoup преобразует HTML-строку в виртуальное DOM в памяти, на этом этапе мы можем выполнять запросы к этому DOM. 4- **soup.find("div", {"id": "resultsInfo"})** выполняет запрос к виртуальному DOM для поиска div с идентификатором, равным resultsInfo, на целевой веб-странице. Теперь переменная result содержит найденный элемент, в противном случае она будет равна None:

<div id=”**resultsInfo**”>Здесь находится абзац текста!</div>

Чтобы получить больше информации о парсинге с помощью BeautifulSoup, перейдите по этому документу:

https://www.crummy.com/software/BeautifulSoup/bs4/doc/

Некоторые полезные методы, связанные с получением результатов парсинга:

1- Удаление тегов из результата, например, преобразование <tag>тестовый текст</tag> в тестовый текст

def cleanhtml(raw_html):
    cleanr = re.compile('<.*?>')
    cleantext = re.sub(cleanr, '', str(raw_html))
    return cleantext

2- Найти наибольшее число в предложении

def findLargestNumber(text):
    ls = list()
    for w in text.split():
        try:
            ls.append(int(w))
        except:
            pass
    try:
        return max(ls)
    except:
        return None