HTML 정보로부터 원하는 데이터를 가져오기 위해 사용되는 패키지 중 하나이다.
_
!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')
아래 두 경우는, 동일하다.
p = etree.fromstring(page.text, parser=etree.HTMLParser())
i = p.xpath('//span[@id="team_SK]')
for e in i :
print(e.text)
# 결과 : SSG
r = soup.find_all('span', {'id' : 'team_SK'})
for e in r :
print(e.text)
# 결과 : SSG
정규표현에서 사용하는 메타문자에는 다음과 같은 것들이 있다.
. ^ $ * + ? { } [ ] \ | ( )
Dot ( . )
a.b : a와b 문자 사이에 어떤 문자 (알파벳, 숫자 상관X ) 가 들어가도 OK (문자 하나)
반복 ( * )
바로 앞의 문자가 0~무한대로 반복될 수 있다는 의미
반복 ( + )
바로 앞의 문자가 1번 이상 반복될 수 있다는 의미
반복 ( {m,n}, ? )
{m} : 반드시 m회 반복
{m,n} : m~n회 반복
? : 앞의 문자가 있어도 되고, 없어도 된다는 의미
시작 ( ^ ) / 끝 ( $ )
^T : T로 시작
T$ : T로 끝
: 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로 끝남.