작성
·
223
0
먼저 저는 'div.alertbar' 내에 문자로 된 것이 제가 추출하고 싶은 것 밖에 없어 그냥 이렇게 해도 되겠다 싶어 바로 이렇게 추출했습니다.
#내 코드
import requests
from bs4 import BeautifulSoup
res = requests.get('https://davelee-fun.github.io/index.html')
soup = BeautifulSoup(res.content,'html.parser')
mydata = soup.select_one('div.alertbar')
print(mydata.get_text().strip())
그리고 다른 것을 시도해 보다 든 생각인데
import requests
from bs4 import BeautifulSoup
res = requests.get('https://davelee-fun.github.io/index.html')
soup = BeautifulSoup(res.content,'html.parser')
mydata = soup.find('span',attrs={'class':'alertbar','style':'display: block'})
print(mydata.get_text().strip())
코드 블럭에서 처럼 이런식으로 속성:속성값으로 문제를 해결해보려 했으나 style이라는 속성은 css언어로 프로퍼티와 그 값이 있어 불가능해 보였습니다.. 혹시 가능한 방법이 있을까요?
답변 1
0
안녕하세요. 답변 도우미입니다.
웹 페이지에서 'style' 속성의 특정 부분만 일치하는 요소를 찾고 싶다면, 아래와 같이 lambda 함수를 사용하는 방법이 있기는 있습니다만, 복잡한 문법을 사용하고, 조금 일반적이지는 않습니다.
mydata = soup.find('span', attrs={'class': 'alertbar', 'style': lambda value: 'display: block' in value})
이 코드는 'style' 속성의 값에 'display: block'이 포함되어 있는 'span' 태그 중에서 'alertbar' 클래스를 가진 요소를 찾습니다. 물론 이 방법은 'style' 속성의 값을 정확하게 알 때만 사용할 수 있습니다.
추가로, 본질적으로 CSS는 디자인을 적용하기 위한 목적을 가진 언어이므로, 데이터를 추출하는 데에는 실제 내용을 담고 있는 HTML 태그와 속성에 주로 초점을 맞추는 것이 일반적입니다. 따라서 'style' 속성보다는 다른 HTML 속성을 기준으로 데이터를 추출하는 것을 추천드립니다.
감사합니다.