Program/코딩공부

네이버영화 웹스크래핑

ggaul 2022. 8. 5. 09:23
반응형

요즘 코딩 공부를 한다. 

 

왜 이렇게 할 일을 필요없이 늘리는지 모르겠지만 어쩔수 없다. 궁금하니까...

 

일지도 도움이 된단다... 나의 온라인 선생님께서

 

그래서 한번 적어보려 한다.

 

네이버영화 랭크 사이트를 웹스크래핑 하는 방법이다.

 

코로나 양성 판정을 받아서 1주일 학습을 미뤄두다가 다시 할려니 다 까먹었다 -_- 

 

그래서 해설을 참고 하며 다시 차근차근 시작해본다.

 

네이버영화 메인 화면

위 보이는 화면에서 랭킹, 제목, 별점을 가져와 자료를 만들어볼것이다.

BeautifulSoup 설치 후 실행 headers

 - pip install requests bs4를 통해 설치

- 설치 후 헤더를 입력하면 된다.(항상 저 양식 똑같다. 내가 누구라는 통성명과 같다고 한다 그냥 그렇게 알고만 있으란다)

- requests란에 내가 검색하고자 하는 API을 넣어두자

- print(soup)를 출력하여 soup이 잘 실행되는지 확인하자

개발자도구를 이용한 사이트 소스코드 확인

- 영화랭킹중 확인하고자 하는 (랭킹,제목,별점) 중 아무거나 상관없다. 지정후 우클릭을 하고 검사를 선택하여 해당 소스코드를 확인

- 'tr' 코드를 확인하면 된다.

- tr 코드 중 맨 상단 코드를 우클릭 하여 copy > copy selector를 선택

- trs = soup.select('#old_content > table > tbody > tr'

  print(trs)

- 출력하여 제대로 가지고 오는지 확인

- tr 코드 소스를 잘가져오는지 확인까지 했고 그 다음 for문을 이용하여 tr안에 있는 a태그를 가지고 올것이다.

- a태그는 제목이라는 걸 알수 있다.

for tr in trs:

  a = tr.select_one('a')

  print(a)

- a를 출력하여 tr 안에 a 태그를 잘 가지고 오는지 확인

- None라는 문구를 확인할 수 있다.

- None라는 의미는 여러가지가 있겠지만 우리는 필요없는 정보이니 아예 제외하고 자료를 다시 도출하자

for tr in trs:
  a = tr.select_one('a')
  if a is not None:
    print(a)

- 우리는 제목만 필요하다.

for tr in trs:
  a = tr.select_one('a')
  if a is not None:
    title = a.text
    print(title)
 

- 랭크 값을 가지고 올것 이다. 

- 랭크에 마우스를 가져다 놓고 우클릭 > 검사 클릭 하면 소스코드를 확인할 수 있다.

- 랭크의 숫자는 이미지고 숫자화 해놓은 코드는 'alt' 구나 하는 것을 알 수 있다.

for tr in trs:
  a = tr.select_one('a')
  if a is not None:
    title = a.text
    rank = tr.select_one('img')
    print(rank)

- 위 화면에 출력되는 것을 볼 수 있다.

- 우리는 'alt' 값만 가지고 올것이다.

for tr in trs:
  a = tr.select_one('a')
  if a is not None:
    title = a.text
    rank = tr.select_one('img')
    print(rank['alt'])

- 별점 스크랩핑 하는 방법

- 별점 우클릭 > 검사 클릭후 소스코드를 보면 별점을 나타내는 코드는 td.point라는 것을 알수 있다.

for tr in trs:
  a = tr.select_one('a')
  if a is not None:
    title = a.text
    rank = tr.select_one('img')['alt']
    star = tr.select_one('td.point')
    print(star)
- 출력하면 포인트값이 출력되는 것을 알수 있다.
 
 
- 지금까지 알아왔던 자료들을 종합해서 출력하면 알고 싶어했던 랭크, 제목, 별점 순으로 출력이 가능하다.
반응형