project 일부 코드
from selenium import webdriver
from t01 import *
from bs4 import BeautifulSoup
import requests
from urllib.parse import urlencode
import time
import json
import pprint as ppr
import re
"""
국보/ 보물/ 사적/ 명승/ 등록문화재
"""
class Heriage:
def __init__(self):
self.url = "http://heritage.go.kr"
self.path = "/heri/cul/culSelectRegionList.do"
self.params = {
"s_kdcd":None, # 11 : 국보/ 12 : 보물/ 13 : 사적/ 15 : 명승/ 79 : 등록문화재
"s_ctcd":None, # 시 => ex) 서울 : 11
"ccbaLcto":None, # 도 => ex) 종로구 : 11
"culPageNo":None, # 현재 페이지
}
self.total_data = [] # list
self.html = None
self.bs_object = None
# Instance method (1)
def UrlRequests(self):
# ===================================
self.params["s_kdcd"] = 11 # 국보
self.params["s_ctcd"] = 11 # 시
self.params["ccbaLcto"] = 11 # 도
self.params["culPageNo"] = 1 # 현재 페이지
# url encoding
enc = urlencode(self.params)
# ===================================
target_url = self.url + self.path + "?" + enc
# print (target_url)
# requests.get()
self.html = requests.get(target_url)
if self.html.status_code == 200:
self.bs_object = BeautifulSoup(self.html.text, "html.parser")
t_data = self.bs_object.select("table.tbl.type_1.c_result > tbody > tr > td:nth-of-type(3)")
for i in t_data:
n = re.sub(pattern="[\r,\n, ]",repl="", string= str(i.text))
sub_url = i.select_one("a").attrs["href"]
f_idx, r_idx = str(sub_url).find("("), str(sub_url).find(")")
sub_url = (str(sub_url)[f_idx+1:r_idx]).replace("'", "").split(sep=",")
print (n, sub_url)
t_param = {
"s_kdcd":self.params["s_kdcd"], "s_ctcd":self.params["s_ctcd"],
"ccbaKdcd":sub_url[0], "ccbaAsno":sub_url[1],
"ccbaCtcd":sub_url[2], "ccbaCpno":sub_url[3],
"culPageNo":self.params["culPageNo"],
}
# data
# 국보, 시, 도, 이름, 소재지
data = {"s_kdcd": self.params["s_kdcd"], # 국보
"s_ctcd": self.params["s_ctcd"], # 시
"ccbaLcto": self.params["ccbaLcto"], # 도
"name": n, # 이름
"location": None} # 소재지
self.total_data.append(self.SubUrlRequests(t_param, data)) # function call
@staticmethod
def SubUrlRequests(params, data):
enc = urlencode(params)
target_url = "http://heritage.go.kr/heri/cul/culSelectDetail.do?" + enc
html = requests.get(target_url)
if html.status_code == 200:
bs_obj = BeautifulSoup(html.text, "html.parser")
txt = bs_obj.select_one("div.hschDetail_info > table.hschDi_info > tbody > tr:nth-of-type(4) > td")
data["location"] = str(txt.text).strip()
return data
else:
return None
def main():
node = Heriage() # 객체 생성
node.UrlRequests()
print(node.total_data)
if __name__ == "__main__":
main()
'언어 > python' 카테고리의 다른 글
프로젝트 코드 일부분 (0) | 2019.01.20 |
---|---|
프로젝트 디렉토리 (0) | 2019.01.13 |
Project 일부분 (0) | 2019.01.05 |
project_openapi_ch (0) | 2018.12.31 |
test_code (0) | 2018.12.30 |