개발 => 복습 후 재정리 대기/Python

[Python] Crawling 크롤링 실습

장 상 현 2021. 5. 2.
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')

title = soup.select_one('#old_content > table > tbody > tr:nth-child(2) > td.title > div > a')

print(title) # select_one # <a href="/movie/bi/mi/basic.nhn?code=171539" title="그린 북">그린 북</a>
print()
print(title.text) # .text 태그 안 텍스트만 가져오기 # 그린 북
print()
print(title['href']) # 태그 속성만 가져오기 # /movie/bi/mi/basic.nhn?code=171539
print()
#두 카피셀렉터 비교
#old_content > table > tbody > tr:nth-child(2)
#old_content > table > tbody > tr:nth-child(3)

#비교 후 상위값만 분류
#old_content > table > tbody > tr # tr들로 분류

trs = soup.select('#old_content > table > tbody > tr') # select 결과는 리스트로 나옴

#old_content > table > tbody > tr:nth-child(2) > td.title > div > a
#td.title > div > a # tr 하위에서 또 찾기

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

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')

title = soup.select_one('#old_content > table > tbody > tr:nth-child(2) > td.title > div > a')

print(title) # select_one # 그린 북
print()
print(title.text) # .text 태그 안 텍스트만 가져오기 # 그린 북
print()
print(title['href']) # 태그 속성만 가져오기 # /movie/bi/mi/basic.nhn?code=171539
print()
#두 카피셀렉터 비교
#old_content > table > tbody > tr:nth-child(2)
#old_content > table > tbody > tr:nth-child(3)

#비교 후 상위값만 분류
#old_content > table > tbody > tr # tr들로 분류

trs = soup.select('#old_content > table > tbody > tr') # select 결과는 리스트로 나옴

#old_content > table > tbody > tr:nth-child(2) > td.title > div > a
#td.title > div > a # tr 하위에서 또 찾기

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

댓글