반응형

파이썬 깔아주시고 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라는 것입니다 이 함수는 실질적인 내용만 가져오게 해줍니다.

반응형