본문 바로가기
웹 개발 공부중

파이썬 크롤링 기초

by redeyes 2021. 12. 15.

BeautifulSoup 기본 세팅

파이썬 BeautifulSoup은 HTML 문서를 분석 할 수 있는 라이브러리 입니다.

이를 이용하여 HTML 태그에 쉽게 접근 하고 데이터를 추출할 수 있습니다.
BeautifulSoup은 find(), select()등 여러가지 있는데,
하나만 제대로 알고 있어도 데이터를 추출하는 큰 어려움이 없습니다.

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.naver?sel=pnt&date=20210829',headers=headers)

soup = BeautifulSoup(data.text, 'html.parser')

print(soup)

SELECT()

select(), select_one()설명

※ select_one()은 조건에 맞는 태그를 한개(여러개가 있어도 한개만 가져옵니다.)

태그이름 태그이름으로 찾음
.클래스이름' 클래스이름으로 찾음
#아이디이름' 아이디이름으로 찾음 (아이디는 연속X)
상위태그이름>자식태그>자식태그' 부모 자식간의 태그 조회' >' 로 구분
상위태그이름 자손태그' 부모 자손간의 태그 조회 #띄어쓰기(공백) 로 구분 #자식을 건너 띈다.
[속성]' 태그 안의 속성을 찾음
태그이름.클래스이름' 해당태그의 클래스이름을 찾음
#아이디이름 > 태그이름.클래스이름 아이이디 이름으로 찾고 자식태그와 클래스이름으로 찾음

find_all()

find_all()은 Beautiful Soup 검색 API에서 가장 많이 사용되는 방법 이기 때문에 바로가기를 사용할 수 있습니다.

BeautifulSoup객체나 Tag객체를 함수처럼 취급하면 해당 객체 를 호출 find_all()하는 것과 같습니다. 다음 두 줄의 코드는 같은 결과를 나타냅니다.

soup.find_all("a")
soup("a")

이 두 줄도 동일합니다.

soup.title.find_all(string=True)
soup.title(string=True)

find()

 메소드 서명: find( name , attrs , recursive , string , **kwargs )

find_all()방법은 결과를 찾기 위해 전체 문서를 스캔하지만 때로는 하나의 결과만 찾고 싶을 때가 있습니다.  

find_all('title', limit=1) 를 호출할 때마다 리스트로 전달하는 대신 find()메서드를 사용할 수 있습니다 . 이 두 줄의 코드는 거의 동일합니다.

soup.find_all('title', limit=1)
# [<title>The Dormouse's story</title>]

soup.find('title')
# <title>The Dormouse's story</title>

유일한 차이점은 find_all()단일 결과를 포함하는 리스트를 반환하고 find()는 결과만 반환한다는 것입니다.

 
 

'웹 개발 공부중' 카테고리의 다른 글

pymongo CRUD  (0) 2021.12.15
mongoDB시작하기  (0) 2021.12.15
python requests 활용  (0) 2021.12.14
ajax 온도 가져오기  (0) 2021.12.14
ajax 따릉이 데이터가져오기  (0) 2021.12.14