크롤링!!!!

SJ K·2022년 11월 30일
0

파이썬

목록 보기
2/4

크롤링이란...


웹 페이지에 접속해서 특정 데이터를 찾아서 가져오는것..
예를 들어 뉴스사이트에서 기사가 필요하면 뉴스페이지에 접속해서 기사를 긁어온다.

크롤링 기본 세팅

크롤링을 이용하기 위해서는 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)

따란~ 원하는 정보를 얻었다!

사용한 함수


.select

매칭되는 여러아이템(객체)을 list로 반환한다.

.select_one

매칭되는 아이템을 하나만 반환한다.

profile
하루하루 알차게

0개의 댓글