반응형
파이썬 깔아주시고 IDE는 파이참을 이용하려고 합니다.
📝정적크롤링
변하지 않는 데이터를 의미합니다. 즉 한 페이지 안에서 원하는 정보가 모두 드러나는 것을 크롤링하는 것입니다.
이 정적 크롤링을 하기 위해서 BeautifulSoup이라는 패키지를 사용하려고 합니다.
import requests
from bs4 import BeautifulSoup as bs
html = requests.get('https://search.naver.com/search.naver?'
'sm=tab_hty.top&where=nexearch&query=%EB%82%A0%EC%94%A8&oquery=%EB%'
'82%A0%EC%94%A8&tqi=hZrKcsprvOsssQswMTwssssssUh-229279') # 주소를 받는다
soup = bs(html.text,'html.parser') # HTML 소스코드 가져옴
data1 = soup.find('div',{'class':'detail_box'}) # soup의 div라는 태그를 찾고 그 중에서 detai1_box라는 태그를 가져온다
print(data1) # 출력 : <div class="detail_box"> <dl class="indicator"> <dt>....
data2 = data1.findAll('dd') # 가져온 것중에서 dd태그를 다 가져온다 (리스트로 담김)
print(data2) # 출력 : [<dd class="lv2"><span class="num">48㎍/㎥</span>보통<span class="ico"></span></dd>, <dd cla
dust01 = data2[0].find('span',{'class':'num'}).text # dd태그 중에서 span이란 태그를 찾고 그 중에서 num이라는 클래스 선언한 거 찾기
print(dust01) # 출력 : 48㎍/㎥
dust02 = data2[1].find('span',{'class':'num'}).text # 초미세먼지
print(dust02) # 출력 : 32㎍/㎥
O3 = data2[2].find('span',{'class':'num'}).text # 오존
print(O3) # 출력 : 0.092ppm
data3 = soup.find('div',{'class':'main_info'}) # main_info 클래스 안에 있는 거 다 보여줌
print(data3) # 출력 : <div class="main_info"> <span class
degree = data3.find('span',{'class':'todaytemp'}).text # text 안 붙히면 <span class="todaytemp">13</span>가 출력 됨
print(degree) # 출력 : 31
import requests
from bs4 import BeautifulSoup as bs
tag = "<p class='big_data01' id='uniq01'> Hello World </p>"
soup = bs(tag,'html.parser')
# 태그 이름으로 특정
data01 = soup.find('p')
print(data01) # 출력 : <p class="big_data01" id="uniq01"> Hello World </p>
data01_text = soup.find('p').text # Hello World
print(data01_text) # 출력 :
# 클래스 이름으로 특정
data03 = soup.find(class_='big_data01')
print(data03) # 출력 : <p class="big_data01" id="uniq01"> Hello World </p>
data03_text = soup.find(class_='big_data01').text
print(data03_text) # 출력 : Hello World
import 해주는 법은 from bs4 import BeautifulSoup 이라고 쳐주면 빨간줄이 생기실텐데 Alt + Enter 누르시면
Import 할 수 있게 도와줍니다. Import 해주면 해당 패키지를 설치해줍니다.
- html = requests.get(url주소)
- 내가 크롤링할 url주소를 가져옵니다.
- soup = bs(html.text,'html.parser')
- url주소의 html태그를 다 가져옵니다
크롤링하는 방법이 여러개 있습니다.
📝1. 태그 + class명으로 가져오기
- data1 = soup.find('div',{'class':'detail_box'})
- soup.find(태그명,{class : 클래스명}) 태그안에 있는 정보 태그들을 다 가져 올 수 있습니다.
- 여기에서는 div태그 class명이 detail_box라는 것은 해당 클래스 안에 들어있는 것들을 의미합니다
📝2. 태그로만 가져오기
- data2 = data1.findAll('dd')
- soup.findAll(태그명)
- 태그명에 해당하는 모든 태그 값을 다 가져옵니다. 만약 여러 개일시 리스트로 담습니다 인덱스로 개별 접근할 수 있습니다.
📝3. class명으로만 가져오기
- data03 = soup.find(class_='big_data01')
- soup.find(class_=클래스명)
- 해당 클래스 정보를 다 가져옵니다.
그런데 soup.find같은 걸로 가져와서 출력해도 태그도 같이 출력됩니다 그 안에 내용물이 중요한데 말이죠 그 내용물을 가져오기위한 것이 .text라는 것입니다 이 함수는 실질적인 내용만 가져오게 해줍니다.
반응형
'[Big Data]' 카테고리의 다른 글
[BigData] 빅데이터 빈도분석을 WordCloud로 표현해보기 (0) | 2021.07.24 |
---|---|
[BigData] 빅데이터 코엔엘파이설치 및 Twitter (형태소 분리) (0) | 2021.07.23 |
[BigData] 빅데이터 동적 크롤링 Selenium4 (Chrome Driver, XPath) (0) | 2021.07.23 |
[BigData] 빅데이터 Beautiful Soup 할리스매장 크롤링하기(CSV로 저장해보기) (0) | 2021.07.23 |