파이참->File->Setting->requests 패키지 설치, bs4 패키지 설치
크롤링이 필요한 이유: 가져온 정보를 가지고 솎아내기 위해
정보 요청(requests)과 가져온 정보를 솎아내는 것(bs4)이 가장 중요하다.
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')
print(soup)
정보를 requests.get을 이용해 가져와서 beautifulsoup를 이용해서 data.text의 html 코드 부분을 가져온다.
출력해보면 해당 페이지의 html 코드가 나타난다.
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.text)
영화 페이지에서 그린북에서 마우스 오른쪽 버튼 클릭, 검사를 클릭, element에서 copy->copy selector
그리고 soup.select_one('')의 작은따옴표 안에 붙여넣어주면
해당 정보를 가져올 수 있게 된다.
가져온 정보에서 text부분을 출력해보면 그린 북이라는 글자가 출력된다.
태그의 속성을 가지고 오고 싶으면
print(title['href'])
이제 영화 페이지에서 영화 랭킹에 해당하는 모든 영화 제목들을 가져와 본다.
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')
#old_content > table > tbody > tr:nth-child(2) > td.title > div > a
for tr in trs:
a_tag=tr.select_one('td.title > div > a')
if a_tag is not None:
title=a_tag.text
print(title)
if문을 써서 a_tag가 None이 아닐 때로 상정하고 text를 출력해야 에러가 발생하지 않는다.
'웹' 카테고리의 다른 글
15. pymongo로 DB조작하기 (0) | 2021.09.03 |
---|---|
14. 웹스크래핑 연습 (0) | 2021.09.02 |
11. 원페이지 쇼핑페이지에 환율 api 적용 (0) | 2021.08.27 |
10. Ajax 연습 (0) | 2021.08.26 |
9. Ajax (0) | 2021.08.25 |
댓글