BeautifulSoup 예제

Computer/Python 2015. 1. 11. 17:37

이전에 지인이 각 금융사가 ELS 금융상품을 출시하는데, 

이를 모아 일목요연하게 볼 수 있으면 좋겠다라고 했던 기억이 나서, 테스트 삼아 금융권 웹사이트 파싱을 시도.

Active X 등으로 도배된 게 국내 금융사 웹사이트 특성이라 crawling이 쉽지 않겠다고 생각하고 시작했으나 간단하게 끝났다.


id로 데이터 속성값이 분류도 안되어있고, 상당히 지저분한 html이었는데...

아무튼 'strong' tag의 class attribute가 name인 값을 찾아 리스트로 출력하는 코드. 

파싱 대상 문서는 url 참고.


import requests as rq
import bs4

def getELSNames():
url = 'http://www.truefriend.com/main/mall/openels/EdlsInfo.jsp?cmd=TF02ca000002_List'
response = rq.get(url)

navigator = bs4.BeautifulSoup(response.text)
# for searching tags like <strong class = 'name'>
html_names = navigator.find_all('strong', attrs={'class':'name'})

for tag in html_names:
print (tag.text.strip())

getELSNames()


'Computer > Python' 카테고리의 다른 글

네이버 지도 상호검색 결과 파싱  (0) 2015.01.07
파이썬으로 개미수열 찍기  (5) 2014.12.03

네이버 지도 상호검색 결과 파싱

Computer/Python 2015. 1. 7. 19:16
오늘 모 군의 질문으로 괜히 한번 짜본, 
상호명으로 네이버에서 검색했을 때 결과 중 전화번호만 가져오는 코드. 

네이버 Open API를 써서 연동하는 게 정상이겠지만 키도 발급받아야 하고 등등...해서 그냥 requests 라이브러리를 사용하여 http get으로 받아봤다. 
테스트해보니 user-agent가 없으면 서버에서 http 400 error를 뱉어서 header에 user-agent만 추가해주고, json 받아서 return. 

이렇게 간단하다니 파이썬은 정말 라이브러리가 잘 되어있다! 





import requests as rq
import json

def getAddressFromNaver(name):
url = "http://map.naver.com/search2/local.nhn"
header = {'User-Agent': 'Mozilla/5.0'}
payload = {'query': name}

req = rq.Request('Get', url, headers=header, params=payload)
r = req.prepare()
s = rq.Session()
result = s.send(r).json()
return result['result']['site']['list'][0]['tel']

if __name__ == '__main__':
print(getAddressFromNaver("롯데마트서울역점"))




'Computer > Python' 카테고리의 다른 글

BeautifulSoup 예제  (0) 2015.01.11
파이썬으로 개미수열 찍기  (5) 2014.12.03

파이썬으로 개미수열 찍기

Computer/Python 2014. 12. 3. 00:03

(코딩 자체가 워낙 오랜만이지만)

Python3로 짤막하게 뭐라도 만들어 볼겸,

엊그제 봤던 '개미수열' 문제도 떠오르고, 정말정말 간만에 살짝 알고리즘 코딩스러운 것도 간만에 해보고 싶고.... 


해서 만들어 본 개미수열 찍는 코드. 

파이썬도 아직 안 익숙하고 코딩도 너무 오랜만에 하니 금방 할 줄 알았는데 생각보다 시간이 걸렸다;; 


* 개미수열 (참고)

11

12

1121

122111

112213

12221131

1123123111

12213111213113

11221131132111311231

12221231123121133112213111


#initialize
char = "1"
output = ""

for i in range(10):
j = 0
while j < len(char):
curr = char[j]
count = 1
while j+1 < len(char) and curr == char[j+1]:
count += 1
j += 1
output += curr + str(count)
j += 1
print (output)
char = output
output = ""


'Computer > Python' 카테고리의 다른 글

BeautifulSoup 예제  (0) 2015.01.11
네이버 지도 상호검색 결과 파싱  (0) 2015.01.07