달나라 노트

Python으로 HTML 태그의 특정 속성값 가져오기 본문

Python/Python ETC

Python으로 HTML 태그의 특정 속성값 가져오기

CosmosProject 2021. 5. 17. 00:50
728x90
반응형

 

 

 

https://cosmosproject.tistory.com/158?category=953474

 

Python : Web page의 HTML 코드를 가져오기.

import requests from bs4 import BeautifulSoup as bs URL = "https://www.naver.com" rq = requests.get(URL) soup = bs(rq.content, 'html.parser') print(soup) 어떤 Web 페이지의 HTML 코드를 가져오기 위해..

cosmosproject.tistory.com

 

위 링크에서 web page의 HTML 코드를 crawling해오는 내용을 다뤘습니다.

 

 

 

 

https://cosmosproject.tistory.com/159?category=953474 

 

Python : Web 페이지에서 원하는 태그의 정보 추출하기

Web 페이지의 HTML코드를 가져온 다음에는 정보를 선택하는 작업이 필요합니다. 가져온 HTML 코드에서 내가 원하는 부분만 추출할 수 있어야 한다는 뜻입니다. import requests from bs4 import BeautifulSoup as.

cosmosproject.tistory.com

 

그리고 위 링크에선 HTML 코드 중 특정 tag의 값을 불러오는 내용을 봤습니다.

 

 

 

이번에는 HTML의 어떤 태그 속에 존재하는 속성값을 불러와보겠습니다.

 

 

import requests
from bs4 import BeautifulSoup as bs

URL = 'https://www.naver.com'

rq = requests.get(url)
soup = bs(rq.content, 'html.parser')

attr = soup.select('a')

for i in attr:
    print(i['temp'])

코드는 위와 같습니다.

 

핵심은 soup.select를 사용했다는 것이죠.

 

select(tag_name)은 괄호 안에 적힌 tag_name인 모든 태그의 속성정보를 불러옵니다.

 

<html>
    <div class="~~~">
        <a class="~~" temp="first_a_tag"></a>
        
        <ul id="~~" class="~~">
            <li></li>
            <li></li>
        </ul>
    </div>
    
    <div class="~~~">
        <a class="~~" tmpe="second_a_tag"></a>
        
        <ul id="~~" class="~~">
            <li></li>
            <li></li>
        </ul>
    </div>
</html>

예를들어 위같은 HTML코드가 있을 때,

 

attr = soup.select('a')

위처럼 적으면 모든 HTML 코드 전체에 존재하는 a tag의 속성값들을 불러와서 attr이라는 변수에 저장합니다.

 

 

attr = soup.select('a')


for i in attr:
    print(i['temp'])

그리고 a태그는 여러개일 수 있으며 a태그에 속한 속성들도 여러개일 것이기 때문에

얻어진 속성들도 여러개일 것입니다.

 

따라서 위처럼 반복문으로 temp라는 속성의 속성값을 불러오는것이죠.

 

위 예시 HTML 코드에서는

먼저 존재하는 모든 a 태그의 속성정보를 불러온 후,

반복문에서 속성이름이 temp인 속성값(i[temp])을 print합니다.

 

그니까 결과는 first_a_tag, second_a_tag 두 속성값이 출력되겠죠.

 

 

 

import requests
from bs4 import BeautifulSoup as bs

URL = 'https://www.naver.com'

rq = requests.get(url)
soup = bs(rq.content, 'html.parser')

attr = soup.select_one('a')

print(i['temp'])

만약 select 대신 select_one을 쓴다면

HTML 코드에서 가장 처음 등장하는 a태그의 정보만을 가져옵니다.

 

 

 

 

 

import requests
from bs4 import BeautifulSoup as bs

URL = 'https://www.naver.com'

rq = requests.get(url)
soup = bs(rq.content, 'html.parser')

attr = soup.select_one('div > div > div > ul > li > a')

print(i['temp'])

또한 위와같은 식으로 tag의 포함관계를 명시하여

특정 태그 속의 태그 정보를 가져오도록 할 수도 있습니다.

 

 

 

 

 

 

 

728x90
반응형
Comments