Development

[python, requests, bs4] select와 select_one을 사용한 웹페이지 크롤링

개발자 강정 2021. 12. 30. 16:34
import requests
from bs4 import BeautifulSoup

headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
data = requests.get('https://movie.naver.com/movie/sdb/rank/rmovie.nhn?sel=pnt&date=20200303',headers=headers)

soup = BeautifulSoup(data.text, 'html.parser')

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

for tr in trs:
    a_tag = tr.select_one('td.title > div > a')
    if a_tag is not None:
        rank = tr.select_one('td:nth-child(1) > img')['alt']
        title = a_tag.text
        rate = tr.select_one('td.point').text
        print(rank, title, rate)

크롤링하고자 하는 웹페이지에서 개발자 도구를 열어 원하는 부분의 selector를 복사해온다.

반복되는 부분은 select를 이용해서 trs에 저장했다.

trs에 for문을 돌려서, select_one을 활용해 원하는 부분들을 골라서 크롤링한다.

01 그린 북 9.60
02 가버나움 9.59
03 베일리 어게인 9.52
04 주전장 9.52
05 포드 V 페라리 9.51
...

위와 같이 원하는 정보만을 크롤링할 수 있다.