CoderCastrov logo
CoderCastrov
Rubygems

Эмоциональные горки парсинга: мой первый Ruby CLI Gem

Эмоциональные горки парсинга: мой первый Ruby CLI Gem
просмотров
3 мин чтение
#Rubygems
Table Of Content

    Трудно поверить, что я уже на 4-й неделе программы по инженерии программного обеспечения Flatiron School, но я пришел к своей первой неделе проекта!

    Перед началом этой недели я был очень нервничал. Я чувствовал уверенность в своих знаниях до этого момента, но начинать с чистого листа меня пугало. Требования к проекту включали использование данных из внешнего источника, поэтому первое, что мне нужно было сделать, это выбрать тему. Я просмотрел множество вариантов API, но не смог найти ничего, что бы меня действительно заинтересовало. Поэтому я решил (хорошо или плохо) попытаться спарсить веб-сайт для получения данных.

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

    Как только у меня были все мои файлы настроены и организованы для моего проекта (что было довольно сложным процессом), я решил, что парсинг данных будет моим первым приоритетом. Я хотел убедиться, что смогу получить фактические данные и загрузить их в свое приложение. Оттуда я был уверен, что смогу использовать данные таким образом, чтобы заставить свою программу работать.

    Я перешел на начальную страницу, которую хотел спарсить, и попытался получить названия шоу. Это было то, что я уже тестировал, поэтому очень быстро у меня был список из 40 шоу на Бродвее в моем терминале. Ура! Мало кто знал, что это будет единственная легкая часть парсинга сайта Playbill. К сожалению, когда я углубился в данные на главной странице, я понял, что в классификации и группировке информации было много несоответствий, что делало почти невозможным получить чистый парсинг. Некоторые мюзиклы отображались как пьесы, адреса форматировались по-разному на всем сайте, данные о синопсисе были связаны с реакцией на COVID-19 и т.д.

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

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

    Парсинг сложен, но я нашел repl.it, который был очень полезен и позволял мне сразу же парсить данные и видеть результаты: https://repl.it/@TheGingertonic/ScraperChecker#main.rb. Я очень рекомендую использовать его для тестирования парсинга разных веб-сайтов. Мне все равно пришлось долго искать на Playbill, чтобы получить то, что я действительно хотел, и даже после того, как я это сделал, мне нужно было найти творческие способы форматирования всех данных в последовательный и удобный формат.

    После получения данных остальная настройка была довольно простой. Я смог использовать то, что узнал в лабораторных работах и развивать это. Я очень доволен результатом своего проекта и думаю, что это то, что я действительно буду использовать, когда Бродвей, наконец, откроется снова (после COVID)! В целом, я рад, что выбрал парсинг (хотя у него были свои трудности). Я был вызван новым образом, что заставило меня искать решения проблем. И ведь именно это мы, разработчики, делаем? 😎