python으로 데이터 다운받기 - BeautifulSoup로 스크레이핑하기

2018. 3. 8. 02:04Python-이론/python-인공지능2

BeautifulSoap 이용하기



BeautigulSoup는 Html과 xml을 분석해주는 라이브러리입니다. 우선은 설치부터 해보겠습니다.




pip를 이용해서 다운 받을 수 있다. 가장 간단한 방법으로 사용해보자!!!



from bs4 import BeautifulSoup

soup = BeautifulSoup(html,'html.parser')

h1 = soup.html.body.h1
p1 = soup.html.body.p
p2 = p1.next_sibling.next_sibling

print("h1: ",h1.string)
print("p1: ",p1.string)
print("p2: ",p2.string)

가장 주의해야할 부분들은 BeautifulSoap를 통해 객체를 만들엊 줄 때 인자를 처음은 html 두번째는 html을 분석할 거면 html.parser로 써주어야한다. 그리고 태그이름으로 값을 찾을때에는 bs4의 인스턴트.html.body.태그이름 으로 찾을 수 있다. 첫 next_slibing은 공백과 띄어쓰기를 읽고 다음 next_slibing이 다음 p태그의 값을 가리킨다.



이번에는 urlibr과 함께 사용하기

from bs4 import BeautifulSoup
from urllib import request
from urllib import parse

API = "http://www.kma.go.kr/weather/forecast/mid-term-rss3.jsp"
values = {'id':'108'}
params = parse.urlencode(values)
print("params: ",params)
url = API +"?"+params

data = request.urlopen(url).read()
soup = BeautifulSoup(data,"html.parser")

print(soup.find(id="title").string)
print(soup.find(id="wf").string)


결과물


id값 혹은 class 값을 통해 데이터 찾기

from bs4 import BeautifulSoup

html = """


후니의 컴퓨터

  • node.js
  • python
  • dataStructure
""" soup = BeautifulSoup(html,'html.parser') h1 = soup.select_one("div > h1#title").string li_list = soup.select("div > ul.item > li") p = soup.find(id="title") print(h1) print(p) for li in li_list: print(li.string)