Python으로 HTML 태그의 특정 속성값 가져오기
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의 포함관계를 명시하여
특정 태그 속의 태그 정보를 가져오도록 할 수도 있습니다.