Один пример парсинга с использованием Beautiful Soup
Table Of Content
- **The Beautiful Soup**
- Ресурсы и код:
- Beautiful Soup: Построение веб-парсера с помощью Python - Real Python
- В этом руководстве вы пройдете основные шаги процесса парсинга веб-страниц. Вы узнаете, как написать скрипт...
- Веб-парсинг - Wikipedia
- Веб-парсинг, веб-харвестинг или извлечение данных из веба - это извлечение данных с веб-сайтов. Веб-парсинг...
часть вторая эксперимента по анализу настроений с использованием BERT с оценкой на данных, полученных из интернета — отзывы Yelp с помощью Beautiful Soup
Огромное количество данных в Интернете является богатым ресурсом для любой области исследований или личного интереса. Для эффективного сбора данных необходимы навыки парсинга веб-страниц.
Парсинг веб-страницы включает ее загрузку и извлечение данных из нее. Загрузка - это скачивание страницы (что делает браузер, когда пользователь просматривает страницу). Поэтому парсинг веб-страниц является основным компонентом парсинга веб-страниц для последующей обработки. После загрузки происходит извлечение данных. Содержимое страницы может быть разобрано, просмотрено, переформатировано, его данные могут быть скопированы в электронную таблицу или загружены в базу данных. Парсеры веб-страниц обычно извлекают что-то из страницы, чтобы использовать это для других целей в другом месте.
Автоматизированный парсинг веб-страниц может быть решением для ускорения процесса сбора данных. Код написан один раз, поэтому он будет получать информацию много раз и с многих страниц.
Является ли парсинг веб-страниц законным?
К сожалению, на этот вопрос нет однозначного ответа. Некоторые веб-сайты явно разрешают парсинг. Другие явно запрещают его. Многие веб-сайты не предлагают ясных указаний в одну или другую сторону.
Перед парсингом любого веб-сайта необходимо искать страницу с условиями использования, чтобы увидеть, есть ли явные правила относительно парсинга. Если их нет, то это становится вопросом суждения.
Однако помните, что парсинг веб-страниц потребляет ресурсы сервера для хост-сайта. Если мы просто парсим одну страницу один раз, это не вызовет проблем. Но если наш код парсит 1000 страниц каждые десять минут, это может быстро стать дорогостоящим для владельца веб-сайта.
Таким образом, помимо соблюдения всех явных правил парсинга веб-страниц, размещенных на сайте, также рекомендуется следовать этим bewst практикам:
- Рассмотрите возможность кэширования контента, который вы парсите, чтобы он загружался только один раз.
- Вставьте паузы в свой код, используя функции, такие как time.sleep(), чтобы не перегружать серверы слишком большим количеством запросов слишком быстро.
The Beautiful Soup
Beautiful Soup - это библиотека Python для парсинга структурированных данных. Она позволяет взаимодействовать с HTML таким же образом, как вы взаимодействуете с веб-страницей с помощью инструментов разработчика.
Библиотека предоставляет несколько интуитивно понятных функций, которые можно использовать для изучения полученного HTML. Во-первых, Beautiful Soup должна быть установлена в терминале:
$ python -m pip install beautifulsoup4
В последнем блоге был представлен эксперимент с BERT, в котором было показано, как трансформер можно использовать для оценки тональности текста. Отзывы о случайном тексте оцениваются по шкале от 1 до 5, где 1 - наименее хорошо, а 5 - отличная оценка. Теперь, когда BERT уже создан и работает, в этой части будут извлечены комментарии с веб-страницы и будет проведена оценка тональности.
Прежде всего, необходимо вставить URL (просто вставьте URL в скрипт):
#запрос с кодом парсинга
r = requests.get('https://www.yelp.com/biz/the-local-american-saloon-belgrade')
soup = BeautifulSoup(r.text, 'html.parser')
Очевидно, что каждый из комментариев уже хранится внутри класса.
Можно быстро проверить, как выглядит фактический вывод запроса:
Этот вывод будет передан в Beautiful Soup, и следующие несколько строк кода фактически извлекут интересующие компоненты.
#извлечение определенных компонентов
regex = re.compile('.*comment.*')
#поиск абзацев
result = soup.find_all('p', {'class':regex})
reviews = [result.text for result in result]
Таким образом, Beautiful Soup позволяет создавать "суп", и мы можем наблюдать это просто, набрав "soup" в colab или jupyter notebook, вы заметите формат, по которому Beautiful Soup может осуществлять поиск. Все отзывы находятся внутри тега <p>
, который является абзацем с классом "comment".
Во-вторых, мы хотим очистить вывод, так как результат показывает некоторый дополнительный текст, который нельзя передать напрямую в модель. Это можно легко решить:
result[0].text
Наконец, для завершения, комментарии могут быть аккуратно отображены в DataFrame из модуля Pandas перед оценкой тональности:
import pandas as pd
import numpy as np
#передача отзыва
df = pd.DataFrame(np.array(reviews), columns=['review'])
Проверка вывода DataFrame и первых пяти комментариев (head):
С помощью функции sentiment_score будут оценены все отзывы:
def sentiment_score(review):
tokens = tokenizer.encode(review, return_tensors ='pt')
result = model(tokens)
return int(torch.argmax(result.logits))+1
Эта функция используется для каждого комментария, хранящегося в DataFrame:
df['sentiment'] = df['review'].apply(lambda x: sentiment_score(x[:512]))
Результат оценки тональности с помощью BERT имеет форму DataFrame, где все результаты рассчитаны. Это можно легко проверить, набрав "df".
Ресурсы и код:
Real Python — Beautiful Soup
Beautiful Soup: Построение веб-парсера с помощью Python - Real Python
В этом руководстве вы пройдете основные шаги процесса парсинга веб-страниц. Вы узнаете, как написать скрипт...
realpython.com
Wikipedia — Веб-парсинг
Веб-парсинг - Wikipedia
Веб-парсинг, веб-харвестинг или извлечение данных из веба - это извлечение данных с веб-сайтов. Веб-парсинг...
en.wikipedia.org
Colab Notebook
https://colab.research.google.com/drive/1JlVk_YIhslV6RgF6zfSxTB5NC2QwPsmf#scrollTo=qSeDG58L_975