
주요 학습내용
1. Beautiful Soup 기초
2. 예제를 통한 Beautiful Soup 사용
사용할 예제
soup = BeautifulSoup(page, "html.parser")
find() : 처음 발견한 태그만 출력 됨
find_all() : 여러 개의 태그를 list 형태로 반환
리스트 형태이기 때문에 find()처럼 바로 text사용하여 추출 불가능
find, find_all, select, select_one
- find & select_one : 단일 선택
- find_all & select : 다중 선택
for each_tag in soup.find_all("p"):
print('='*50)
print(each_tag.text)
for each in links:
href = each.get("href") # each["href"]
text = each.get_text()
print(text + " => " + href)
![]() | ![]() |
|---|
사용할 자료 출처
- 네이버 증권 시장지표
- https://finance.naver.com/marketindex/
![]() | ![]() |
|---|
# import
from urllib.request import urlopen
from bs4 import BeautifulSoup
url = "https://finance.naver.com/marketindex/"
page = urlopen(url)
soup = BeautifulSoup(page, "html.parser")
print(soup.prettify())
url = "https://finance.naver.com/marketindex/"
response = urlopen(url)
response.status
soup = BeautifulSoup(response, "html.parser")
print(soup.prettify())
- request -> response 로 받기
- response.status를 실행시키면 200이라는 값이 출력되는데, 해당 값은 http 상태코드로 200번대는 정상적으로 코드가 작동됨을 나타낸다.
HTTP 응답 상태 코드는 특정 HTTP 요청이 성공적으로 완료되었는지 알려줍니다. 응답은 5개의 그룹으로 나누어집니다: 정보를 제공하는 응답, 성공적인 응답, 리다이렉트, 클라이언트 에러, 그리고 서버 에러. 상태 코드는 section 10 of RFC 2616에 정의되어 있습니다.
soup.find_all("span", "value"), len(soup.find_all("span", "value"))
soup.find_all("span", class_="value"), len(soup.find_all("span", class_="value"))
soup.find_all("span", {"class": "value"}), len(soup.find_all("span", {"class": "value"}))
# 원하는 항목의 text만 추출하기
# 미국 데이터 추출
soup.find_all("span", "value")[0].text,soup.find_all("span", {"class": "value"})[0].string, soup.find_all("span", class_="value")[0].get_text()