BeautifulSoup4 기본

2023. 4. 18. 12:42·python/python_selenium
import requests
from bs4 import BeautifulSoup

url = "<https://www.naver.com/>"
res = requests.get(url)
res.raise_for_status()

# res.text 를 lxml파서를 통해 beautifulsoup 객체로 만듬.
soup = BeautifulSoup(res.text, "lxml")

# html 에서 첫번째로 발견되는 title 값을 가져옴.
print(soup.title)
# title값의 text값만 가져옴.
print(soup.title.get_text())

print(soup.link)
# link태그가 가지고있는 속성을 가져옴.
print(soup.link.attrs)

# link 태그 안의 특정 속성을 출력
print(soup.link['rel'])
print(soup.link.attrs['rel'])
  • BeautifulSoup : 스크래핑을 하기위해 사용하는 패키지
  • lxml : xml을 해석하는 파서
  • soup = BeautifulSoup(res.text, "lxml") : res.text 를 lxml파서를 통해 beautifulsoup 객체로 만듬.
  • soup.title : soup 에서 첫번째로 발견하는 title 값을 가져옴
    ㄴ soup.title.get_text() : title값의 text값만 가져옴.
    ㄴ soup.title.attrs : title값의 속성을 모두 가져옴.
    ㄴ soup.title.attrs[’abc’] : title 속성값중에 abc 속성을 가져옴.
# soup 객체중 a태그, class속성이 일치하는 첫번째 엘리먼트 가져옴.
test = soup.find("a", attrs = {"class" : "_NM_THEME_CATE tab id_bboom"})
# 속성값만 할당함
test = soup.find(attrs = {"class" : "_NM_THEME_CATE tab id_bboom"})
print(test)

list1 = soup.find("li", attrs = {"class" : "nav_item"})
print(list1)
# list1에 들어있는 값 중 i 값만 출력
print(list1.i)
  • soup.find(”a” , attrs = {”class” : “abc”}) : a태그중 class가 “abc”인 첫번째 element 가져옴.
  • soup.find(attrs = {”class” : “abc”}) : class가 “abc”인 첫번째 element 가져옴.
  • soup.find(attrs = {”class” : “abc”}).i : 위 elemet에서 i의 값만 가져옴.
## 다음값으로 이동

print(list1.a.get_text())

# list1엘리먼트로부터 다음 엘리먼트(형재 관계) 로 넘어감.
# 태그 사이의 개행정보가 있어서 next_sibling을 2회해야할 수도 있음.
print(list1.next_sibling.next_sibling)

list2 = list1.next_sibling.next_sibling
list3 = list2.next_sibling.next_sibling

print(list3.get_text())

# 다음 sibling으로 가는데 "li"와 일치하는 태그를 찾음.
list2 = list1.find_next_sibling("li")
print(list2.get_text())

# list2 기준으로 다음 형제들을 모두 가져옴.

print(list2.find_next_siblings("li"))

## 이전값으로 이동 
list2 = list3.previous_sibling.previous_sibling
print(list2.get_text())

## 부모 태그로 이동.
# list1의 부모 태그로 이동함.
print(list1.parent)
print("-"*40)

test = soup.find("a", text = "로그인")
print(test)
  • lst1.next_sibling : lst1의 다음 element(형제 관계) 로 넘어감.
    ㄴ 태그 사이에 개행정보가 있어서 next_sibling을 2회 해야 할 수도 있음.
  • lst1.find_next_sibling("li") : 다음 element(형제 관계) 중 “li” 태그인 값을 가져옴.
  • lst1.find_next_siblings("li") : lst1 기준으로 다음 “li”태그인 element들을 모두 가져옴.
  • lst1.previous_sibling: lst1의 이전 element(형제 관계) 로 넘어감.
  • lst1.parent : lst1의 부모 element로 넘어감
    ㄴ 참고로 자식 element로 넘어갈 때에는 위와 같이 변수.속성값 을 사용한다.

'python > python_selenium' 카테고리의 다른 글

BeautifulSoup4 활용2  (0) 2023.04.22
BeautifulSoup4 활용1  (0) 2023.04.19
user agent  (0) 2023.04.17
정규식  (0) 2023.04.17
웹스크래핑에 필요한 이론  (0) 2023.04.16
'python/python_selenium' 카테고리의 다른 글
  • BeautifulSoup4 활용2
  • BeautifulSoup4 활용1
  • user agent
  • 정규식
몽자비루
몽자비루
코딩공부 정리용 블로그입니다.
  • 몽자비루
    공부하는 블로그
    몽자비루
  • 전체
    오늘
    어제
    • 분류 전체보기 (176) N
      • python (30)
        • python_selenium (16)
        • python_pygame (3)
      • appium (0)
      • 쿠버네티스 (60)
        • linux (8)
        • shell programming (8)
        • docker (18)
        • cka (23)
      • postman&API (16)
      • QA성장하기 (32) N
        • 개발자에서 아키텍트로 스터디 (6)
        • 소프트웨어 공학 이해도 높이기 (6)
        • 테스팅 전문 지식 쌓기 (18)
        • 제4회 QA conference (2) N
      • 에러일기 (1)
      • Server&load (35)
        • AWS (27)
        • load test (5)
        • CI CD (3)
        • Jmeter (0)
      • RAG 을 활용하여 LLM 만들어보기 (1) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    postman
    .cpu
    k8s
    테스트 결과보고서
    앱공존성
    로스트아크api
    포스트맨
    API
    네트워크 테스트
    공존성테스트
    vi에디터
    리눅스
    쿠버네티스
    qa
    도커
    테스트스크립트
    사드웨어리소스
    qa 컨퍼런스
    로스트아크
    LOSTARK
    cka
    application log
    스터디
    linux
    개발자에서아키텍트로
    qa conference
    QAKOREA
    애플리케이션로그
    python
    e2c
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
몽자비루
BeautifulSoup4 기본
상단으로

티스토리툴바