728x90
Install
pip install bs4
pip install requests
pip install lxml
Basics
bs4는 requests와 lxml 파서에 의존한다. 여러 라이브러리에 의존하기 때문에 프로젝트가 고도화되면 bs4를 잘 쓰지 않는다.
from bs4 import BeautifulSoup
import requests
# 1) Fetch the pages (obtained a response object)
result = requests.get('www.google.com')
# 2) Page content
content = result.text
# 3) Create soup
soup = BeautifulSoup(content, "lxml")
# 4) Finding elements with bs4
soup.find(id="specific_id")
soup.find('tag', class_="class_name")
# article 태그 내 h1 태그 찾고싶은 경우
soup.find('article', class_="main_article")
soup.find('h1')
# 모든 h2 엘리먼트 찾기 -> list 반환 [el1, el2, el3, ...]
soup.find_all("h2")
get HTML
bs4로 간단히 HTML 전부 스크래핑하기
from bs4 import BeautifulSoup
import requests
website = 'https://subslikescript.com/movie/Budapest_Noir-5161018'
result = requests.get(website)
content = result.text
# 해당 페이지의 html을 가져오기
soup = BeautifulSoup(content, 'lxml')
print(soup.prettify())
가져온 데이터를 어떻게 파싱할 것인가?
1. ID
2. Class name
3. Tag name, CSS Selector
4. Xpath
이 순으로 파싱을 하면 인생이 편하다.
간단한 웹사이트 스크래핑하여 txt로 저장하기
from bs4 import BeautifulSoup
import requests
website = 'https://subslikescript.com/movie/Budapest_Noir-5161018'
result = requests.get(website)
content = result.text
# 해당 페이지의 html을 가져오기
soup = BeautifulSoup(content, 'lxml')
# 파이썬 클래스와 구별해주기 위해 class_ 라고 기재해줌
box = soup.find('article', class_='main-article')
title =box.find('h1').get_text()
transcript = box.find('div', class_='full-script').get_text(strip=True, separator=' ')
# w(writing) 모드로 열기
with open(f'{title}.txt', 'w') as file: # title + '.txt'
file.write(transcript)
728x90
'Research > Python' 카테고리의 다른 글
XPath_Basics (0) | 2023.03.26 |
---|---|
BeautifulSoup_여러 페이지 수집하기 (0) | 2023.03.26 |
Python_웹 스크래핑을 위한 기본 문법 (0) | 2023.03.25 |
bs4로 지니뮤직 스크래핑하여 mongoDB에 저장하기 (0) | 2022.11.22 |
bs4 select() method cheat sheet (0) | 2022.11.21 |
댓글