เก็บข้อมูล user review บน mobile app ยากไหม? มาลองกัน!

Chawatvish
3 min readFeb 14, 2022

มีใครเคยเก็บข้อมูลที่มีจำนวนมากๆ กันบ้างไหมนะ แล้วเก็บกันยังไง หรือว่าใช้วิธีการ copy paste ถ้าใครเคยยกมือขึ้น 🙌🏼 วันนี้เราจะมาไถ่ข้อมูลและเก็บเป็น csv หรือ excel กัน

Intro

ก่อนอื่นมารู้จัก user review กันก่อน ถ้าใครที่ใช้ smart phone ทั้งระบบ iOS และ android เราจำเป็นต้องดาวน์โหลดแอปพลิเคชันบน App Store และ Play Store ตามลำดับ คราวนี้ถ้าเกิดเป็นองค์กรหรือบริษัทที่ต้องการดู feedback จากลูกค้าของพวกเขาว่ามีผลตอบรับเป็นยังไงบ้าง คงหนีไม่พ้นที่ต้องเข้าไปในเว็บไซค์ของ app

ถ้าต้องการเก็บข้อมูลทั้งหมดแหละจะทำกันยังไง ? ในบทวามนี้จะพามารู้จักเว็บไซต์ที่ชื่อว่า
Sensor Tower จะเป็นเว็บที่เอาไว้วิเคราะห์ meta data ของแอปพลิเคชันที่อยู่ในสโตร์

เรามาลองเลือกสักหนึ่งแอปพลิเคชันสำหรับบทความนี้กันครับ ขอเลือก …. อันดับที่ 1 ของแอปพลิเคชันฟรีเลยละกันครับ

ในหน้าแรกจะเป็นการ vistualize ข้อมูลออกมาเช่น review ในแต่วันละเป็นยังไง, คำอธิบายของแอป, ranking และ อื่นๆ ในบทความนี้จะมาดูในส่วนของ user review

ในส่วนของหน้า user review เราจะเจอข้อมูลเยอะแยะมากมาย สามารถกรองข้อมูลที่เราต้องการได้ในระดับหนึ่ง

🚨 Geek Alert 🚨

เครื่องมือที่จำเป็นสำหรับการทำ Scrape หรือ ไถ่ข้อมูลนั้นเอง

  • Python
  • Jupyter notebook
  • Chrome
  • Chrome driver

สำหรับ Chrome driver ให้ดาวน์โหลดตรงกับ browser version ที่คุณใช้ ลิงค์ดาวน์โหลด

เริ่มต้นด้วยการเปิด notebook โดยใช้ Jupyter notebook ใน row แรกเราจะทำการ install dependency ตามนี้

!pip install bs4
!pip install pandas
!pip install selenium
  • bs4 ไว้สำหรับการดึงขึ้นมูลใน HTML
  • pandas ไว้สำหรับการปรับปรุงข้อมูลในรูปแบบตาราง คล้าย excel
  • selenium ไว้สำหรับเป็น driver บน web browser

ถ้าพร้อมแล้วมาลุยกันต่อเลย
import lib ที่จำเป็นในการงานด้านล่างนี้ เอาไว้ row ที่ 2

from bs4 import BeautifulSoup
import pandas as pd
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

พอทำการ import เสร็จแล้วเราจะมาเปิด web browser และพาไป link ของ sensor tower

driver = webdriver.Chrome('Path of your chrome driver')
driver.get('https://sensortower.com/ios/TH/chonburi-hospital/app/hm-phr-m/1559337829/review-history?search=&start_date=2021-07-31&end_date=2021-10-28&selected_tab=reviews')

เพิ่ม function สำหรับการเรียกดูดหน้าเว็บให้เป็น html

def get_page():
doc = BeautifulSoup(driver.page_source)
rows = doc.select("tbody tr")

datapoints = []
for row in rows:
cells = row.select("td")
data = {
'Country': cells[0].text.strip(),
'Date': cells[1].text.strip(),
'Rating': cells[2].select_one('.gold')['style'],
'Review': cells[3].select_one('.break-wrap-review').text.strip(),
'Version': cells[4].text.strip()
}
datapoints.append(data)
return datapoints

ต่อไปจะเป็นการไถ่ข้อมูลไปเรื่อยๆ จนครบทุกหน้า

all_data = []
wait = WebDriverWait(driver, 5, poll_frequency=0.05)
while True:
wait.until(EC.invisibility_of_element_located((By.CSS_SELECTOR, '.ajax-loading-cover')))
results = get_page()
all_data.extend(results)
paging_group = driver.find_elements_by_css_selector(".universal-flat-button-group.right-aligned-group")[3]
next_button = paging_group.find_elements_by_css_selector(".universal-flat-button")[1]
if next_button.get_attribute('disabled'):
break
next_button.click()
time.sleep(0.5)

จะมี while loop วนไปเรื่อยๆ จนโดน break ถ้าปุ่ม next button ไม่เปิดให้ใช้งาน และในทุกๆ การโหลดของแต่ละหน้าจะเก็บข้อมูลลงใน list ไว้ให้เรียบร้อย

หลังจากที่ได้ข้อมูลมาแล้วก็จะเป็นการ save เก็บเป็น csv หรือ excel

df = pd.DataFrame(all_data)
df.to_csv("user_review.csv", index=False)

# TO Excel
!pip install openpyxl
df.to_excel("user_review.csv", index=False)

Note: สำหรับ excel จำเป็นต้องลง library ที่ชื่อว่า openpyxl เพื่อเป็น driver ในการสร้างไฟล์ excel

ก็เสร็จเป็นที่เรียบร้อยนะครับ สำหรับการไถ่ข้อมูล user review จากเว็บ sensor tower จากที่ลองทำดูไม่ยากใช่ไหมครับ ? หลังจากนี้จะเป็นการนำข้อมูลไปใช้งานต่อเช่นการทำความสะอาดข้อมูล เพื่อเตรียมนำไปวิเคราะห์หรือหาโมเดลไว้สำหรับหาความตอบโจทย์ทางธุรกิจต่อไป

What’s next ?

หลังจากที่ทุกคนได้ลอง ไถ่ข้อมูลบน sensor tower กันแล้ว บทความต่อไป ผมจะมาบอกวิธีการไถ่บน facebook หรือ twitter ต่อไปครับ ถ้าใครชอบบทความสไตล์ how-to แบบนี้
โปรดแชร์บทความให้คนรอบตัวได้อ่านกันนะครับ แล้วพบกันใหม่ 👋🏼

--

--