div 태그를 속성명과 속성값으로 찾아가는 것 말고도 select 함수를 이용해서 찾을 수도 있다.

 

1. select_one (하나만 찾는다)

import requests, bs4, pandas as pd, numpy as np
 
#웹페이지 html 소스 가져오기
resp = requests.get("http://finance.naver.com/marketindex/")
resp.encoding='utf-8'
html = resp.text

bs = bs4.BeautifulSoup(html, 'html.parser')

# 데이터 추출하기
price = bs.select_one("#exchangeList > li.on > a.head.usd > div > span.value").text
price


결과 :

'1,219.50'

bs.select_one("#exchangeList > li.on > a.head.usd > div > span.value").text

처음 시작은 #속성값 (여기는 ul.exchangeList로 바꿔보니 안 된다. 이유는 잘 모르겠다. 처음 시작이라고 안 되는 것은 아니고 ul태그에서는 안 되는 것 같다. div#exchangeList로 바꾸는건 된다.)

그 다음은 태그명이 li고, 속성값이 on (여기는 #on으로 바꿔보니 안 된다. 그리고 li#on 역시 안 된다. 하지만 li.on을 li만으로 바꾸는건 된다. 더이상 다른 li가 없으니 문제 없을 것 같다.) (속성명은 건너뛰고 '태그명.속성값'으로 가는 것 같다.)

그 다음은 태그명이 a고, 속성값이 head.usd (= head + 문자 1개 + usd)

그 다음은 태그명이 div (마찬가지로 여기도 div.head_info.point_dn 으로 바꿔도 된다. 태그명이 div고, 속성값이 head_info + 문자 1개 + point_dn 인 것을 찾는다.) (search에서는 공백을 반드시 처리해줘야한다. 지금 여기서는 . 으로 처리했다.)

 

이 부분에 대해서는 나중에 추가로 확인이 필요할 것 같다.

 

마지막 추출은 .text 말고 .string으로 문자열로 추출해도 동일하다.

import requests, bs4, pandas as pd, numpy as np
 
#웹페이지 html 소스 가져오기
resp = requests.get("http://finance.naver.com/marketindex/")
resp.encoding='utf-8'
html = resp.text

bs = bs4.BeautifulSoup(html, 'html.parser')

# 데이터 추출하기
price = bs.select_one("#exchangeList > li.on > a.head.usd > div > span.value").string
price

 

 

2. select (일치하는 것 모두를 찾는다)

import requests, bs4
 
#웹페이지 html 소스 가져오기
resp = requests.get("https://sparkkorea.com/퀴즈/")
resp.encoding='utf-8'
html = resp.text

bs = bs4.BeautifulSoup(html, "html.parser")
# div에서 id가 id_py_quiz인것만 추출
divs = bs.select("div#id_spark_quiz")
print(divs)


결과 :

[<div class="class_spark_quiz" id="id_spark_quiz">
<h1>Spark 퀴즈 </h1>
<a href="https://forms.gle/Fw49w9GhWQChDcZm7"> 6/13 Spark 심화과정 </a>
<p></p>
<a href="https://forms.gle/G4TcXm3fKuHLHA6D6"> 6/13 Spark 기본과정 </a>
<p></p>
<a href="https://forms.gle/M8gr1kC2ubA3UDVp8"> 6/18 Spark [MAP_FILTER] </a>
<p></p>
<a href="https://forms.gle/h8w5mZ4MNaPLCPbi6"> 6/18 Spark GroupBy 심화 </a>
<p></p>
<a href="https://forms.gle/q5yL6QHfueDLM5w27"> 6/25 Spark RDD 실전 분석 </a>
<p></p>
<a href="https://forms.gle/Gxb4y6LfVYiaLu4M7"> 6/27 Spark RDD 실전 분석2 </a>
<p></p>
</div>]

bs.select("div#id_spark_quiz")

여기서는 한 번에 div 태그 안의 값 중 id_spark_quiz를 찾는다.

 

import requests, bs4, pandas as pd, numpy as np
 
#웹페이지 html 소스 가져오기
resp = requests.get("https://sparkkorea.com/퀴즈/")
resp.encoding='utf-8'
html = resp.text
bs = bs4.BeautifulSoup(html, "html.parser")
# div에서 class가 class_py_quiz인것만 추출 (1개)
seone = bs.select_one("div.class_spark_quiz > a").string    
# div에서 class가 class_py_quiz인것만 추출 (다수)
seall = bs.select("div.class_spark_quiz > a")
for li in seall:
    print(li.text)
    
    
결과 :

 6/13 Spark 심화과정 
 6/13 Spark 기본과정 
 6/18 Spark [MAP_FILTER] 
 6/18 Spark GroupBy 심화 
 6/25 Spark RDD 실전 분석 
 6/27 Spark RDD 실전 분석2 

 

 

+ Recent posts