일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- hive
- PANDAS
- math
- Mac
- c#
- Kotlin
- GIT
- Excel
- 파이썬
- dataframe
- SQL
- Google Spreadsheet
- Java
- Python
- Github
- django
- numpy
- Google Excel
- list
- PySpark
- array
- string
- gas
- PostgreSQL
- Tkinter
- Redshift
- google apps script
- Apache
- matplotlib
- Today
- Total
달나라 노트
Python으로 HTML 태그의 특정 속성값 가져오기 본문
https://cosmosproject.tistory.com/158?category=953474
위 링크에서 web page의 HTML 코드를 crawling해오는 내용을 다뤘습니다.
https://cosmosproject.tistory.com/159?category=953474
그리고 위 링크에선 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의 포함관계를 명시하여
특정 태그 속의 태그 정보를 가져오도록 할 수도 있습니다.
'Python > Python ETC' 카테고리의 다른 글
Python collections : defaultdict (default값이 있는 dictionary) (0) | 2021.07.15 |
---|---|
Python : tqdm (진행 상황 bar 표시하기) (0) | 2021.06.04 |
Image를 ASCII Character art로 변환하기 in Python (0) | 2021.04.01 |
Python subprocess : 음악 파일 재생하기 (0) | 2021.03.29 |
Python : Web 페이지에서 원하는 태그의 정보 추출하기 (1) | 2021.01.23 |