Beautifulsoup / regular expression

김지윤·2023년 4월 11일
0

웹 크롤링

목록 보기
2/4

🌞_ beautifulsoup 이란 ?

HTML 정보로부터 원하는 데이터를 가져오기 위해 사용되는 패키지 중 하나이다.
_

⌨️ bs4 : beautifulsoup4

!pip install beautifulsoup4
from bs4 import BeautifulSoup as bs
from lxml import etree
import requests

page = requests.get('https://sports.news.naver.com/kbaseball/record/index?category=kbo&year=2022')
soup = bs(page.text, 'html.parser')

아래 두 경우는, 동일하다.

🛻 html

p = etree.fromstring(page.text, parser=etree.HTMLParser())

i = p.xpath('//span[@id="team_SK]')
for e in i :
	print(e.text)

# 결과 : SSG

🛻 beautifulsoup

r = soup.find_all('span', {'id' : 'team_SK'}) 
for e in r :
	print(e.text)
    
# 결과 : SSG

🛻 regular expression (정규표현)

정규표현에서 사용하는 메타문자에는 다음과 같은 것들이 있다.

. ^ $ * + ? { } [ ] \ | ( )

  • Dot ( . )
    a.b : a와b 문자 사이에 어떤 문자 (알파벳, 숫자 상관X ) 가 들어가도 OK (문자 하나)

  • 반복 ( * )
    바로 앞의 문자가 0~무한대로 반복될 수 있다는 의미

  • 반복 ( + )
    바로 앞의 문자가 1번 이상 반복될 수 있다는 의미

  • 반복 ( {m,n}, ? )
    {m} : 반드시 m회 반복
    {m,n} : m~n회 반복
    ? : 앞의 문자가 있어도 되고, 없어도 된다는 의미

  • 시작 ( ^ ) / 끝 ( $ )
    ^T : T로 시작
    T$ : T로 끝

⌨️ re.match

: match 가 안될 시, None 이 출력됨

import re

s = 'TestString'

re.match('^T.*g$',s) 
# T로 시작, 중간에 아무 문자나 다수 반복(0~무한대), g로 끝이 남

# 소문자 / 대문자 구분 하는가 ?
re.match('^t.*g$',s)
# 결과 : NOne (대,소문자 구분 O)

re.match('.*t.*g$',s)
# 시작 또는 중간에 t 가 존재, 이후 아무 문자나 다수 반복(0~무한대), g로 끝이 남

s = 'Tg'
re.match('^T.+g$',s)
# T로 시작, 중간에 문자 1개~다수 존재, g로 끝남.
profile
데이터 분석 / 데이터 사이언티스트 / AI 딥러닝

0개의 댓글

관련 채용 정보