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