Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- R 프로그래밍
- 동전 던지기
- 멘탈관리
- 비율
- R4DS
- 이기적 유전자
- 인터스텔라
- 조던피더슨
- 선형성
- R 기초
- 핵 개발
- 찬물샤워
- 큰수의 법칙
- 성악설
- 유닛테스트
- 아인슈타인
- 산입범위
- 최저시급 개정안
- 통계오류
- 비행기 추락
- t검정
- t-test
- 최저 시급
- 자기관리
- 산입 범위
- 티모시페리스
- 수학적 사고
- 핵개발
- 비선형성
- 통계 오류
Archives
- Today
- Total
public bigdata
파이썬을 이용한 웹 스크래핑(edwith 강의) chapter3 웹서비스 본문
1강, 2강
## 1강
# 그냥 개념만 있어서 ...
## 2강 xml
# XML, JSON 등의 마크업 언어가 있다.
# XML은 "<>"가 있다는 점에서 HTML과 매우 유사하지만
# 다른 점은 A, P, H1 등의 태그 같은 형식이 아니여도 된다
# 원하는 대로 정할 수 있다.
# XML은 부모 자식 관계를 가진 트리 구조이다.
# XML은 eXtensible Markup Language의 약자로,
# 다음과 같은 계층 구조로 이루어져있습니다.
# HTML과 비슷하지만 원하는 이름의 태그를 만들 수 있다는
# 특징이 있고, HTML보다 문법 오류를 더 엄격하게 다룹니다.
import xml.etree.ElementTree as ET
input = '''
<stuff>
<users>
<user x="2">
<id>001</id>
<name>Chuck</name>
</user>
<user x="7">
<id>009</id>
<name>Brent</name>
</user>
</users>
</stuff>'''
stuff = ET.fromstring(input) # xml 스트링을 불러오라는 뜻 같다.
lst = stuff.findall('users/user') # 해당 스트링에서 users/user에 해당하는 태그 검색
print('User count:', len(lst)) # 2개가 검색될 것이고
for item in lst: # stuff 객체로 부터 검색된 2개의 Element를 반환 받아 loop 한다.
print('Name', item.find('name').text)
print('Id', item.find('id').text) # <> </> 사이에 있는 건 text로 받환 받고
print('Attribute', item.get("x")) # <불라불라 x='dsds> 이런식으로 된건 get으로 반환 받는듯 하다.
3강
## 3강 xml 스키마
import xml.etree.ElementTree as ET
data = '''<person>
<name>Chuck</name>
<phone type="intl">
+1 734 303 4456
</phone>
<email hide="yes"/>
</person>'''
tree = ET.fromstring(data) # data에 들어있는 xml에 문법오류가 있다면 에러가 발생한다.
print('Name:',tree.find('name').text)
print('Attr:',tree.find('email').get('hide'))
# Name: Chuck
# Attr: yes
import xml.etree.ElementTree as ET
input = '''<stuff>
<users>
<user x="2">
<id>001</id>
<name>Chuck</name>
</user>
<user x="7">
<id>009</id>
<name>Brent</name>
</user>
</users>
</stuff>'''
stuff = ET.fromstring(input)
lst = stuff.findall('users/user')
print('User count:', len(lst))
for item in lst:
print('Name', item.find('name').text)
print('Id', item.find('id').text)
print('Attribute', item.get("x"))
#User count: 2
#Name Chuck
#Id 001
#Attribute 2
#Name Brent
#Id 009
#Attribute 7
4강
## 4강 json
## 또 다른 직렬화 형식인 json
## json은 javascript로 부터 만들어졌다.
# JSON은 XML보다 더 자주 사용되는 데이터 포맷입니다.
# 이 코드는 이전 시간에 XML로 실행했던 것과 정확히 같은 내용의 코드입니다.
# 데이터가 XML 형식에서 JSON 형식으로 바뀐 것을 제외하면 말입니다.
# JSON은 파이썬에서의 딕셔너리와 굉장히 비슷하기 때문에 데이터를 읽어온 후
# 딕셔너리로 접근할 수 있습니다.
import json
data = '''{
"name" : "Chuck",
"phone" : {
"type" : "intl",
"number" : "+1 734 303 4456"
},
"email" : {
"hide" : "yes"
}
}'''
# 이와 같이 여러 개의 데이터를 읽어올 경우 리스트에 딕셔너리가 포함된 형태로 읽어집니다.
info = json.loads(data) # json을 읽어와 딕셔너리 구조로 저장한다.
print('Name:',info["name"])
print('Hide:',info["email"]["hide"])
#Name: Chuck
#Hide: yes
import json
input = '''[
{ "id" : "001",
"x" : "2",
"name" : "Chuck"
} ,
{ "id" : "009",
"x" : "7",
"name" : "Chuck"
}
]'''
info = json.loads(input)
print(info)
print('User count:', len(info))
for item in info: # 리스트에 2개의 요소들로 나뉘어져 저장되어 있으므로 for문으로 출력한다.
print('Name', item['name'])
print('Id', item['id'])
print('Attribute', item['x'])
# [{'id': '001', 'x': '2', 'name': 'Chuck'}, {'id': '009', 'x': '7', 'name': 'Chuck'}]
# User count: 2
# Name Chuck
# Id 001
# Attribute 2
# Name Chuck
# Id 009
# Attribute 7
5강
## 5강 SOA : 서비스 지향 접근 방법(Service Oriented Approach)
# Service Oriented Approach
# 서비스 지향 아키텍처(Service Oriented Architecture,
# 약칭 SOA 「에스오에이」혹은 「소아」로 발음)란 대규모 컴퓨터 시스템을
# 구축할 때의 개념으로 업무상에 일 처리에 해당하는 소프트웨어 기능을
# 서비스로 판단하여 그 서비스를 네트워크상에 연동하여 시스템 전체를 구축해 나가는 방법론이다.
# * 출처 : 위키백과, '서비스 지향 아키텍처'
6강
## 지금은 무료 api가 막혀서 실행이 안된다. ##
## 요번 강의의 코드들은 urlib 그리고 네트워크 관련 이해가 없어서 그런지
## 이해가 안된다. 그냥 이런게 있다. 수준으로 이해하고 넘어가자
## 6강 GeoJSON API
import urllib.request, urllib.parse, urllib.error
import json
serviceurl = 'http://maps.googleapis.com/maps/api/geocode/json?'
while True:
address = "seoul"
if len(address) < 1: break
url = serviceurl + urllib.parse.urlencode({'address': address})
print('Retrieving', url)
uh = urllib.request.urlopen(url)
data = uh.read().decode()
print('Retrieved', len(data), 'characters')
try:
js = json.loads(data)
except:
js = None
if not js or 'status' not in js or js['status'] != 'OK':
print('==== Failure To Retrieve ====')
print(data)
continue
lat = js["results"][0]["geometry"]["location"]["lat"]
lng = js["results"][0]["geometry"]["location"]["lng"]
print('lat', lat, 'lng', lng)
location = js['results'][0]['formatted_address']
print(location)
'Python programming > 웹 크롤링' 카테고리의 다른 글
파이썬을 이용한 웹 스크래핑(edwith 강의) chapter2 HTTP (0) | 2019.11.25 |
---|---|
파이썬을 이용한 웹 스크래핑(edwith 강의) chapter 1 정규식-3 (0) | 2019.11.24 |
파이썬을 이용한 웹 스크래핑(edwith 강의) chapter 1 정규식-2 (0) | 2019.11.17 |
파이썬을 이용한 웹 스크래핑(edwith 강의) chapter 1 정규식-1 (0) | 2019.11.17 |