파이썬 다운로드 – http://www.python.org/download/releases/2.7.6/
뷰티풀 수프 – http://www.crummy.com/software/BeautifulSoup/#Download
파이썬은 외부 라이브러리를 사용할 수 있는 방법이 두 가지로 생각하실 수 있는데요
첫번째로 프로그램이 들어있는 폴더또는 라이브러리 path에 라이브러리를 넣어 두고 import 해서 쓰시면 됩니다.
이는 매우 간단하므로(그냥 프로그램만들때 같은 폴더안에 넣기만 하면 되니까!) 설명하지 않겠습니다.
다른 방법은 라이브러리를 설치 해서 사용하는 방법입니다.
OS환경은 리눅스와 윈도우 두 가지로 설명드리겠습니다.
1.Linux환경에서 파이썬 외부 라이브러리 설치하기
이도 매우 간단한 방법입니다.
리눅스에서는 apt-get 또는 yum 과 같은 방법으로 인스톨하실 수 있습니다.
ex) beautiful soup 설치하기
>>>sudo apt-get install python-bs4
또한 easy install이나 pip등을 통해도 설치하실 수 있습니다
ex) beatufiul soup 설치하기
>>>easy_install beautifulsoup4
>>>pip install beautifulsoup4
다른 한 가지 방법은 setup.py를 사용하는 방법인데, 이는 아래에서 설명할 윈도우환경에서의 파이썬 외부라이브러리 설치 방법과 같으므로 아래에서 설명하도록 하겠습니다.
2.Windows환경에서 파이썬 외부 라이브러리 설치하기
이는 약간의 지식이 필요합니다.
하지만 어려운 방법은 아니니 걱정안하셔도 됩니다.
일단, 파이썬 외부 라이브러리 파일을 압축을 풀어 놓습니다.
1.그리고 cmd창에 들어갑니다.
2.그다음, 명령어로 그 폴더로 이동합니다.
Tip1. cd 주소 = 폴더주소로 이동
ex) cd D:\magnet\nate
는 D드라이브의 magnet폴더의 nate폴더로 들어가라는 뜻 입니다
Tip2. 해당 폴더를 cmd창에 드래그하면 폴더주소가 적힙니다
즉, cd 라고 친 후 cmd창으로 해당 폴더를 드래그를 하여 폴더주소를 적으면 됩니다.
3.python setup.py install 이라고 치면 됩니다.
Tip1. setup.py가 없는 것은 setup.py를 build해야 하는데, 이에 대해선 다음에 다시 설명드리도록 하겠습니다.
beautiful soup 설치 (우분투 환경)
$> pip install beautifulsoup4
웹페이지의 GET 데이터 정보 가져오기
from bs4 import BeautifulSoup
import urllib2
try:
response = urllib2.urlopen(“가져올 웹페이지 주소”)
page = response.read().decode(‘cp949’, ‘ignore’) # 인코딩 변환이 필요할 경우
response.close()
except urllib2.HTTPError, e:
print e.reason.args[1]
except urllib2.URLError, e:
print e.reason.args[1]
soup = BeautifulSoup(page)
웹페이지의 GET 데이터 정보 가져오기[header 포함]
from bs4 import BeautifulSoup
import urllib2
try:
req = urllib2.Request(“가져올 웹페이지 주소”)
req.add_header(‘User-Agent’, ‘Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36’)
req.add_header(‘Host’, “HOST 주소”)
req.add_header(‘Origin’, “Origin 주소”)
req.add_header(‘Referer’, “Referer 주소”)
response = urllib2.urlopen(req)
page = response.read()
soup = BeautifulSoup(page)
except urllib2.HTTPError, e:
print e.reason.args[1]
except urllib2.URLError, e:
print e.reason.args[1]
웹페이지의 POST 데이터 정보 가져오기
from bs4 import BeautifulSoup
import urllib
import urllib2
user_agent = ‘Mozila/4.0 (compatible; MSIE 5.5; Windows NT)’
values = {‘post 데이터 key’ : ‘post 데이터 값’}
headers = {‘User-Agent’: user_agent}
data = urllib.urlencode(values)
try:
request = urllib2.Request(“가져올 웹페이지 주소”, data, headers)
response = urllib2.urlopen(request)
page = response.read().decode(‘cp949’, ‘ignore’) # 인코딩 변환이 필요할 경우
response.close()
except urllib2.HTTPError, e:
print e.reason.args[1]
except urllib2.URLError, e:
print e.reason.args[1]
soup = BeautifulSoup(page)
가져온 DOM 구조 Beautifulsoup로 파싱하기
# td 태그의 class 명이 ‘test’인 항목만 가져와서 출력해라
elements = soup.findAll(‘td’, {‘class’:’test’})
for i in elements:
print str(i)
# img 태그의 속성 명이 ‘vspace’이고 값이 5인 항목만 가져와서 출력해라
elements = soup.findAll(‘img’, attrs={‘vspace’:’5′})
for i in elements:
print str(i)
# img 태그를 가져온 다음 onclick 안의 내용을 출력해라
elements = soup.findAll(‘img’)
for i in elements:
print str(i[‘onclick’])
# img 태그의 부모 노드를 가져와라
elements = soup.findAll(‘img’)
for i in elements:
parent = i.parent
print str(parent)
# img와 동일 선상에 있는 이전 자식 노드를 가져와라
for i in elements:
sibling = i.previous_silibing
print str(sibling)
XML 구조 Beautifulsoup로 파싱하기
– XML도 DOM 구조 파싱과 동일한 형태로 진행된다.
만약 아래와 같은 xml 파일을 파싱하고자 한다면 다음과 같이 진행하면 된다.
<test value1=’123′ value2=’345 />
<test value1=’234′ value3=’456′ />
# xml 데이터 가져오는 부분은 기존과 동일하다.
tests = soup.findAll(‘test’)
for test in tests:
print test[‘value1’]
print test[‘value2’]
보다 자세한 설명은 BeautifulSoup 홈페이지를 참조하도록 하자.

One Reply to “scrap – beautifulsoup4”