CoderCastrov logo
CoderCastrov
Beautifulsoup

Парсинг веб-страниц с использованием BeautifulSoup.

Парсинг веб-страниц с использованием BeautifulSoup.
просмотров
2 мин чтение
#Beautifulsoup
Table Of Content

    Парсинг веб-страниц - это процесс извлечения данных с веб-сайта. Этот процесс имеет различные преимущества, например, если вы ведете онлайн-бизнес, вам необходимо знать информацию о клиентах конкурентов, чтобы определить лучший следующий шаг для вашего бизнеса.

    Существует множество техник для выполнения парсинга веб-страниц. Одной из них является использование библиотеки BeautifulSoup для языка Python. Эта библиотека может упростить нашу работу по парсингу веб-страниц. Beautiful Soup - это библиотека Python для извлечения данных из файлов HTML и XML.

    Мы приведем пример того, как выполнить парсинг веб-страниц с использованием веб-сайта Hacker News. Нашей целью является извлечение заголовков и URL-адресов статьи с наивысшим рейтингом на первой странице веб-сайта Hacker News. Сначала мы импортируем пакеты BeautifulSoup и requests.

    from bs4 import BeautifulSoup
    import requests

    Пакет "requests" позволяет нам загружать все данные с определенных URL-адресов. Мы создаем переменную "response", чтобы загрузить данные веб-сайта, написав:

    response = requests.get("https://news.ycombinator.com")
    yc_web_page = response.text

    Затем мы преобразуем его в тип "text", используя метод "text", и сохраняем его в переменной "yc_web_page". Кроме того, мы создаем переменную "articles" для хранения заголовков и URL-адресов.

    articles = soup.find_all(name="a", class_="titlelink")

    Мы устанавливаем значение "name" равным "a" и "class_" равным "titlelink", потому что мы знаем это из инспекции элемента на веб-странице. Этот тег якоря и класс могут измениться в будущем в зависимости от разработчика. Наша следующая задача - получить заголовок и ссылку в виде списка. Поэтому мы пишем:

    article_texts = []
    article_links = []
    for article_tag in articles:
        text = article_tag.getText()
        article_texts.append(text)
        link = article_tag.get("href")
        article_links.append(link)

    Чтобы определить статью с наибольшим количеством голосов, мы используем генератор списка, как показано ниже:

    article_upvotes = [int(score.getText().split()[0]) for score in soup.find_all(name="span", class_="score")]

    Наконец, мы можем получить статью с наибольшим количеством голосов.

    largest_number = max(article_upvotes)
    largest_index = article_upvotes.index(largest_number)
    
    print(f"Заголовок статьи: {article_texts[largest_index]}")
    print(f"Ссылка на статью: {article_links[largest_index]}")