티스토리 뷰
반응형
크롤링 : 구글, 네이버의 검색엔진이 내 사이트를 퍼가는 것 (=스크립)
크롤링이 가능한 이유 : 내가 이미 받아온 걸 구별하는 것
1. 요청하는 거(코드 따는거)
2. 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')
# 코딩 시작
print(soup)과 같이 보고 시작
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')
select 하는 법
검사에 들어가서 원하는 태그를 copy - select 로 복사해서 붙여놓는다.
글을 가지고 오고싶을때
print(title.text)
속성을 가지고 오고싶을때
print(title['herf'])
정보를 많이 가지고 오고싶을때
다른 부분은 잘라내면 다 가지고 올 수 있음
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:
print(tr)
제목 가져오기
파란 부분을 찾아줘야함
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')
print(a_tag)
text를 가지고 올 때 오류해결방법!
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:
title = a_tag.text
print(title)
반응형
'항해' 카테고리의 다른 글
3주차_10(DB설치 확인) (0) | 2021.12.10 |
---|---|
3주차_9(웹스크래핑(크롤링) 연습) (0) | 2021.12.10 |
3주차_7(웹스크래핑(크롤링) 기초) (0) | 2021.12.10 |
3주차_6(파이썬 패키지 사용해보기) (0) | 2021.12.10 |
3주차_5(파이썬 패키지 설치하기) (0) | 2021.12.10 |