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
'개발자 > Python' 카테고리의 다른 글
Python (파이썬) 크롤링 - 한국 홀리데이 스크랩 (1) | 2020.05.04 |
---|---|
Python (파이썬) while(True) (0) | 2020.04.29 |
Python (파이썬) Class 클래스, 인스턴스, 생성자(__init__) (0) | 2020.04.27 |
Python (파이썬) Matplotlib 시각화를 해보자 (0) | 2020.04.27 |
Python (파이썬) Matplotlib 한글 깨짐 해결 (0) | 2020.04.27 |