본문 바로가기
TIL

내배캠 TIL 2일차

by ColorConeHead 2023. 12. 30.
반응형

지난 번에 두서없이 짰던 코드를 수정하는 시간을 가졌다.

```
import re
import pandas as pd
import requests

game_name = []          # 게임이름
game_score = []         # 게임평점
game_platform = []      # 발매플랫폼
game_year = []          # 출시년도
game_sales = []         # 판매량


### 리스트에 있는 년도의 발매 게임 정보를 크롤링

years = [2017, 2018, 2019, 2020, 2021, 2022, 2023]

for year in years:
    page = 1            # 1페이지는 기본값
    while True:

        # year와 page 값을 받아와 url을 설정해서 requests로 소스코드 읽어오기
        url = f'https://opencritic.com/browse/all/{year}?page={page}'
        response = requests.get(url)
        text = response.content.decode("utf-8")

        # 정규표현식을 이용해서 원하는 소스코드 중 원하는 파츠만 가져오기
        source = re.findall(r'<app-root(.+)</span><!----><!----></div></div><!----></div><!----><!----></div>', text, re.DOTALL)


        # 파츠 내에서 원하는 요소만 가져오기
        long_name = re.findall(r'game/(.+?)</a>', source[0], re.DOTALL)
        score = re.findall(r'score col-auto"> (.+?) </div>',  source[0], re.DOTALL)
        platform = re.findall(r'platforms col-auto"> (.+?) </div>', source[0], re.DOTALL)
        
        # 원하는 요소를 각각의 리스트에 넣어주기
        for i in range(len(long_name)):
            game_name.append(long_name[i].split(">")[1])
            game_score.append(score[i])
            game_platform.append(platform[i])
            game_year.append(year)
        
        
        # 마지막 페이지가 아니면 페이지 +1 해주기
        if 'right page-button' in text:
            page += 1
        else:
            break

print(len(game_year))
```


```
print(len(game_year))
```


print(len(game_year))의 수치가 너무 낮게 나왔다.

수 천은 찍혀야 할 수치인데(17년부터 23년까지 발매된 게임)
겨우 140이 나와서 코드를 계속 돌리면서 고민하느라
오늘은 진전이 많이 없었다.
#
원인은 마지막 if문에서 in범위로
'text'아 아니라 'source'를 사용했던 것

직접 작성한 코드라서 그런 지
틀린 부분을 찾기가 쉽지 않았다.
천천히 되짚으면서 확인하는 습관을 가져야겠다.

이렇게 캐글에서 찾은 데이터와
같은 데이터 양식으로 만들기 위한
준비가 거의 끝났다.

여기에 판매량만 추가해주면 될텐데.
판매량을 집계해주는 사이트는 일단 찾았고
사이트 소스 코드에서 정규표현식을 사용할 부분을 찾으면 될 듯 하다.

반응형

'TIL' 카테고리의 다른 글

내배캠 TIL 6일차  (0) 2023.12.30
내배캠 TIL 5일차  (0) 2023.12.30
내배캠 TIL 4일차  (1) 2023.12.30
내배캠 TIL 3일차  (1) 2023.12.30
내배캠 TIL 1일차  (0) 2023.12.30