[python] beautifulsoup4 Web Scraping, 웹 스크래핑
2023. 1. 22. 16:25ㆍBackend/python
728x90
반응형
beautifulsoup4
HTML 구조를 파악하는 데 도움을 주는 패키지이다.
beautifulsoup 메서드
1) select()
조건을 만족하는 모든 요소를 리스트에 담아 반환한다.
2) select_one()
조건에 만족하는 요소 중 가장 먼저 나오는 요소를 반환한다.
# 선택자를 사용하는 방법 (copy selector)
soup.select('태그명')
soup.select('.클래스명')
soup.select('#아이디명')
soup.select('상위태그명 > 하위태그명 > 하위태그명')
soup.select('상위태그명.클래스명 > 하위태그명.클래스명')
# 태그와 속성값으로 찾는 방법
soup.select('태그명[속성="값"]')
# 한 개만 가져오고 싶은 경우
soup.select_one('위와 동일')
selector 가져오는 방법
개발자 도구에서 원하는 요소를 찾고 'Copy' > 'Copy selector'로 복사하면 해당 요소의 선택자를 가져올 수 있다.
#old_content > table > tbody > tr:nth-child(2)
설치하기
pip install beautifulsoup4
사용 방법
1. requests 패키지를 이용해 html 파일을 받아온다.
import requests
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)
2. beautifulsoup4 패키지를 이용해 파싱 용이한 html로 변환한다.
soup = BeautifulSoup(data.text, 'html.parser')
3. soup.select를 이용해 원하는 부분만 추출한다.
movies = soup.select('#old_content > table > tbody > 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')
movies = soup.select('#old_content > table > tbody > tr')
for movie in movies:
a_tag = movie.select_one('td.title > div > a')
point = movie.select_one('td.point')
rank = movie.select_one('img')
if rank is not None:
print(rank['alt'], a_tag.text, point.text)
728x90
반응형
'Backend > python' 카테고리의 다른 글
[python] python으로 MongoDB 연결하기 : MongoDB, pymongo, Studio 3T (0) | 2023.01.22 |
---|---|
[python] 파이썬 패키지 설치하기, requests 패키지 사용하기 (0) | 2023.01.20 |
[python] JavaScript와 다른 python 문법 (0) | 2023.01.20 |