Web Scraping: Как да извлечем данни на приложения от Google Play със средствата на Selenium?

Автор: Десислава Христова

Случвало ли ви се е да искате да съберете данни от Интернет и да ги анализирате? Например да изтеглите ревюта на потребители с цел да анализирате мнението им или да съберете данни за продукти от различни онлайн магазини и да сравните цените им.

Можете, разбира се, ръчно да го направите това, но със сигурност би ви отнело изключително много време и усилия, особено ако има стотици страници с данни в уеб сайта, който сте си харесали. Всички тези действия могат да се автоматизират с помощта на различни инструменти (езици за програмиране, програми с графичен интерфейс и др.). Това дава един по-бърз и лесен начин за извличане на данни от Интернет. Също така подобни инструменти предоставят големи възможности. Те позволяват на даден бизнес да се сдобие с голям набор от полезни данни, които после могат да се обработят и анализират с цел подобряване на стратегията.

В тази статия ще ви покажа как можете със средствата на Selenium да извлечете данни на приложения от Google Play Store.

Selenium като инструмент за извличане на данни от Интернет (Web Scraping)

Основното предназначение на колекцията от инструменти на Selenium е автоматизирано тестване на уеб сайтове. Единият от тях (Selenium Webdriver) обаче често се използва и за извличане на данни от Интернет. На определен език за програмиране (Python, Java, Ruby и др.) се пишат скриптове, с помощта на които се управлява браузърът, откриват се необходимите елементи на уеб страниците и се извличат нужните данни.

Кои езици за програмиране, операционни системи и браузъри можем да използваме?

Selenium ни дава голям избор относно технологиите, с които можем да работим. Той се поддържа от всички известни браузъри и операционни системи и можем да избираме между няколко езика за програмиране, което педоставя удобство и гъвкавост.

Езици за програмиране: Python, Java, Ruby, C#, JavaScript

Операционни системи: Windows, Linux, macOS

Браузъри: Chrome, Firefox, Edge, Opera, Safari, Internet Explorer

Можем да пишем скриптове и на други езици като PHP, Go, Perl и R например, но поддръжката не се осъществява от официалния проект на Selenium.

От къде да започнем с извличане на данни от Google Play Store?

За целите на нашата задача, ще използваме езика за програмиране Python и браузъра Google Chrome.

Първото нещо, което трябва да направим, е да стартираме браузъра и да заредим началната страница на Google Play Store.

ChromeDriverManager е клас, който е достъпен благодарение на библиотеката Webdriver Manager, препоръчана в официалната документация на Selenium. С метода install() се проверява дали браузърът Chrome е наличен локално. Ако не е, той се тегли автоматично, а ако е наличен, се проверява коя версия е и се актуализира до най-новата при необходимост. Webdriver Manager съдържа такива класове и за Firefox, Edge, Opera и др. Това изключително много улеснява работата, ако искаме да използваме различни браузъри.

Всичко това може и ръчно да се настрои, но отнема повече време и шанса за допускане на грешки е по-голям.

Service обектът съхранява пътя към изпълнимия файл, от който се стартира браузъра.

Selenium Webdriver стартира браузъра и поема контрол над него с помощта на метода Chrome(), който получава Service обекта като стойност на параметъра service. С другия метод – get() задаваме страницата в Интернет, която искаме да ни се зареди в браузъра.

След като Selenium Webdriver е отворил началната страница на Google Play магазина, ще му зададем команда да разкрие падащото меню, което съдържа всички категории с налични приложения. След като кликне върху него, ще трябва да открие елементите, които съдържат хипервръзки, водещи до страниците на категориите.

След като са намерени категориите, ще запазим хипервръзките в списък, за да може след това Selenium Webdriver да премине през всяка една от тях и да извлече данни на приложенията вътре в нея.

[‘https://play.google.com/store/apps/category/ART_AND_DESIGN’,
‘https://play.google.com/store/apps/category/AUTO_AND_VEHICLES’,
‘https://play.google.com/store/apps/category/BEAUTY’]

За целите на нашия пример ще извлечем данни само от първите 3 категории.

Какви данни на приложенията искаме?

На страницата на всяко приложение има голям набор от възможни данни, които можем да извлечем, но не всичките биха ни били полезни. Точно кои ще ни бъдат нужни зависи от задачата, която искаме да решим. Например ако желаем да направим анализ на настроенията (sentiment analysis), ще са ни нужни данни за ревюта, които потребителите са написали под всяко приложение. Ако задачата ни е свързана с прогнозиране на стойности или групиране на обекти, ще ни бъдат нужни повече данни за самите приложения, като например цена, рейтинг, размер, категория и т.н.

В нашия пример няма да решаваме подобни задачи, а просто ще демонстираме самия процес на извличане на данните, така че ще изберем само някои основни данни на приложенията: заглавие (title), създател (creator), категория (category), рейтинг (rating), цена (price), дата на последно обновление (updated) и размер
в мегабайти (size).

Стъпки за извличане на данните

1. Създаване на речник

Ще създадем речник – defaultdict, който за разлика от стандартния dict, когато се опитаме да достъпим или променим несъществуващ ключ, няма да изхвърли изключение, а ще го добави към речника и ще му зададе стойност по подразбиране.

В нашият случай стойността по подразбиране ще е празен списък, към който ще добавяме данните на приложенията.

2. Създаване на функция за извличане на данни от приложенията

Основни действия, които ще се изпълняват при извикване на функцията:

  • Откриване на всички видими приложения на съответната страница
  • Влизане в страницата на всяко едно от откритите приложения
  • Откриване на елементите на характеристиките, които са ни нужни
  • Добавяне на данните в речника за съответните характеристики

3. Функцията в действие

В по-голяма част от категориите, приложенията са разделени на допълнителни групи. За да се достъпят всичките трябва да се кликне върху бутон “Вижте повече”. На някои категории има повече от 1 такъв бутон, а на други няма изобщо никакъв.

Ние трябва да зададем на Selenium Webdriver да влезе в страницата на всяко приложение от допълнителните групи в съответните категории и да извлече данните му. За тази цел при зареждане на страница на дадена категория, се проверява дали има бутони “Вижте повече”. Ако има такива, се запазват хипервръзките им, зарежда се всяка от страниците и се извличат данни на приложенията вътре. Ако няма такива бутони, директно се влиза във всяко приложение в категорията и се взимат данните му.

Преглед и запазване на данните

След като сме приключили с извличането на данните на приложенията, ще създадем нов DataFrame от речника и ще запазим всичко в .csv файл.

Имаме общо 7 колони и 105 реда с данни на приложения, като само рейтингът е от числов тип. Останалите колони са категорийни.

Пет произволни реда от данните изглеждат по следния начин.

 titlecreatorcategoryratingpriceupdatedsize
55Artsy — Discover, Buy, and Resell Fine ArtArt.sy Inc.Art & DesignnanFreeJanuary 19, 202262M
45Sketchers UnitedColorfulArt & Design5FreeApril 26, 20216.7M
92NIUNIU International Co., Ltd.Auto & VehiclesnanFreeDecember 20, 202125M
72Carly — OBD2 car scannerCarly Solutions GmbH & Co KGAuto & Vehicles4.4FreeJanuary 26, 2022131M
49Infinite DesignInfinite Studio LLCArt & Design3.8FreeDecember 23, 202132M

Примера можете да изтеглите от тук.

За да отворите .ipynb файла можете да използвате Jupyter Notebook или друг подобен софтуер. Необходимо е да имате инсталирани нужните библиотеки и пакети на Python, за да изпълните кода.

Ако искате да научите повече за Selenium, можете да прочетете следната статия Selenium Webdriver: Автоматизирано тестване на уеб сайтове.

Искате да научите повече за Python?

Включете се в курса по програмиране с Python.

Споделяне чрез:

Facebook
Pinterest
LinkedIn
Email
Telegram

Подобни статии

survey data analysis cover
Програмиране

Machine Learning: Как да анализираме и групираме данни от анкетно проучване?

Автор: Десислава Христова Анкетното проучване е често използван метод при пазарните изследвания, чрез който се събират данни от определена група хора (респонденти) с цел да

Прочетете повече »
За да предложим по-висококачествена услуга сайта ни използваме бисквитки (cookies)