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 |