본문 바로가기

자동화/Selenium

웹 크롤링으로 iOS 앱스토어 리뷰 Excel에 저장하기 (With Python)

728x90

웹 크롤링으로 iOS 앱스토어 리뷰를 뽑아 엑셀에 자동 저장하여 편하게 리뷰 항목들을 볼 수 있는 코드입니다. 

 

앱스토어 리뷰는 1~10페이지까지 리뷰 목록을 xml 형식으로 볼수 있습니다.

https://itunes.apple.com/kr/rss/customerreviews/page=1/id=742186886/sortby=mostrecent/xml

 

뽑으려고 하는 앱 id는 앱스토어 URL에서 검색 후 확인할 수 있습니다.

 

 

xml URL을 호출하여 find_all()로 뽑으려고 하는 데이터의 태그 데이터를 모두 추출합니다.

 

for k in range(1, 11): #page 1~10까지 크롤링
    url = 'https://itunes.apple.com/kr/rss/customerreviews/page=' + str(k) + '/id=742186886/sortby=mostrecent/xml'
    response = requests.get(url)
    Soup = BeautifulSoup(response.content, 'xml') #해당 URL을 호출하여 parser

    contents = Soup.find_all('content') #리뷰 내용
    titles = Soup.find_all('title') #제목
    ratings = Soup.find_all('im:rating') #평점
    updates = Soup.find_all('updated') #작성 시간

 

태그 데이터를 살펴보면 원하지 않는 데이터들이 있는데 해당 데이터들을 제외하기 위해 for 문을 사용해 데이터를 추출하고 하나의 리스트로 합칩니다.

 

#각각 개수가 다르기 때문에 개수 통일을 위해 각 리스트에 데이터 추가
j = 0
for i in contents:
    if j % 2 == 0:
        content_li.append(i.text)
    j = j + 1

j = 0
for i in titles:
    if j != 0:
        title_li.append(i.text)
    j = j + 1

j = 0
for i in updates:
    if j != 0:
        update_li.append(i.text)
    j = j + 1

for i in range(len(ratings)): #정제된 데이터 하나의 리스트로 합치기
    sum_li.append([update_li[i], ratings[i].text + '점', title_li[i], content_li[i]])

 

전체 코드입니다. 해당 코드 실행시 약 500개의 리뷰들을 excel로 자동 저장하여 확인할 수 있습니다.

 

from bs4 import BeautifulSoup
import requests
from openpyxl import Workbook

sum_li = []

for k in range(1, 11): #page 1~10까지 크롤링
    url = 'https://itunes.apple.com/kr/rss/customerreviews/page=' + str(k) + '/id=742186886/sortby=mostrecent/xml'
    response = requests.get(url)
    Soup = BeautifulSoup(response.content, 'xml') #해당 URL을 호출하여 parser

    contents = Soup.find_all('content') #리뷰 내용
    titles = Soup.find_all('title') #제목
    ratings = Soup.find_all('im:rating') #평점
    updates = Soup.find_all('updated') #작성 시간

    content_li = []
    title_li = []
    update_li = []

    #각각 개수가 다르기 때문에 개수 통일을 위해 각 리스트에 데이터 추가
    j = 0
    for i in contents:
        if j % 2 == 0:
            content_li.append(i.text)
        j = j + 1

    j = 0
    for i in titles:
        if j != 0:
            title_li.append(i.text)
        j = j + 1

    j = 0
    for i in updates:
        if j != 0:
            update_li.append(i.text)
        j = j + 1

    for i in range(len(ratings)): #정제된 데이터 하나의 리스트로 합치기
        sum_li.append([update_li[i], ratings[i].text + '점', title_li[i], content_li[i]])

wb = Workbook()
ws = wb.active
ws.title = 'review'

ws.append(['날짜', '평점', '제목', '리뷰 내용'])

for data in sum_li:
    ws.append(data)

wb.save('/Users/user/Desktop/appstore.xlsx')

print('END')

 

 

728x90