웹 페이지에 접속해서 특정 데이터를 찾아서 가져오는것..
예를 들어 뉴스사이트에서 기사가 필요하면 뉴스페이지에 접속해서 기사를 긁어온다.
크롤링을 이용하기 위해서는 requests와 BearifulSoup 꼭 필요하다!
패키지를 다운받아 사용하자~!
파일 → 설정 → 프로젝트 → 파이썬 인터프리 → + 버튼 → 원하는 라이브러리 검색 → 패키지 설치!!!
추가완료!!
#requests, BeatifulSoup라이브러리를 import
import requests
from bs4 import BeautifulSoup
# 타겟 URL을 읽어서 HTML를 받아옴
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('url',headers=headers)
#HTML을 BeautifulSoup이라는 라이브러리를 활용해 검색하기 용이한 상태로 만듦
#즉 받아온 HTML내용에 접근할 수 있게 해준다.
soup = BeautifulSoup(data.text, 'html.parser')
크롤링할 정보는 순위,제목,변동폭 3가지
import requests
from bs4 import BeautifulSoup
#requests.get()안에 클롤링할 네이버 무비 url작성
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.naver',headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
# 코딩 시작
#크롤링 대상의 DOM요소
#old_content > table > tbody > tr:nth-child(2) > td:nth-child(1) > img
#old_content > table > tbody > tr:nth-child(2) > td.title > div > a
#old_content > table > tbody > tr:nth-child(2) > td.range.ac
#여러개를 크롤링하기 위해서 .select을 이용해 배열로 저장
#.select는 list(배열)로 반환한다
movies = soup.select('#old_content > table > tbody > tr')
#for문 돌림
for movie in movies:
#불필요한 정보를 빼기위해 변수 생성
#.select_one : 문서의 처음부터 시작해서 조건에 맞는 태그를 찾는다.
# list로 반환하지 않는다.
rank = movie.select_one('td:nth-child(1) > img')
# None이 있으면 제외
if rank is not None :
#img태그의 alt 값 빼오기
rank = rank['alt']
#.text함수 이용해서 title 가져오기
title = movie.select_one('td.title > div > a').text
#.text함수 이용해서 변동폭 가져오기
change = movie.select_one('td.range.ac').text
print(rank, title,change)
따란~ 원하는 정보를 얻었다!
매칭되는 여러아이템(객체)을 list로 반환한다.
매칭되는 아이템을 하나만 반환한다.