기록 1

언어/python2018. 12. 15. 22:08

yaml_python.pptx



'언어 > python' 카테고리의 다른 글

python json 파일 변환 - 기상청 데이터  (0) 2018.12.22
OPENAPI  (0) 2018.12.21
실패 -  (0) 2018.11.28
selenium + pandas + 연습 중  (0) 2018.11.15
python selenium  (0) 2018.11.15

실패 -

언어/python2018. 11. 28. 17:58

실패 원인 리스트를 "가나다 순으로 오름차순해서 뿌린다."

from selenium import webdriver

from bs4 import BeautifulSoup

import os

import sys

import time

import pymongo

from urllib.request import urlretrieve

#=========================================

class Cstu:

    # 생성자

    def __init__(self):

        # 작업 디렉토리

        os.chdir("C:\\Users\\sleep\\Desktop\\test_img")

        self.target_url = 'https://www.naver.com/'

        self.path = "C:\\Users\\sleep\\Desktop\\chrom_driver\\chromedriver.exe"

        # selenium

        self.driver = webdriver.Chrome(self.path)

        # beautifulSoup

        self.bs_obj = None


    # Instance method (1)

    def url_requests(self):

        self.driver.get(self.target_url) # 네이버

        assert "NAVER" in self.driver.title

        time.sleep(2) # 2초 딜레이

        print (self.driver.title)


        self.driver.find_element_by_xpath('//*[@id="PM_ID_serviceNavi"]/li[8]/a/span[1]').click()

        assert "네이버 책" in self.driver.title

        time.sleep(2) # 2초 딜레이

        print(self.driver.title)

        # 검색 : 책

        self.driver.find_element_by_name('query').send_keys('책')

        # 버튼 클릭

        self.driver.find_element_by_id('search_btn').click()

        time.sleep(2) # 2초 딜레이

        assert "책 검색결과, 책 검색 : 네이버 책" in self.driver.title

        print(self.driver.title)

        time.sleep(2) # 2초 딜레이


    # Instance method (2)

    def bookTitleCollector(self):

        # //*[@id="content"]/div[6]/strong

        # //*[@id="content"]/div[6]/a[1]

        # //*[@id="content"]/div[6]/a[2]

        p = 0x0

        while True:

            # BeautifulSoup

            self.bs_obj = BeautifulSoup(self.driver.page_source, "html.parser")

            totalList = self.bs_obj.select_one('#searchBiblioList')

            # 책 이미지

            imgList = totalList.select(

                'li > div.thumb.type_search > div.thumb_type.thumb_type2 > a > img')

            # 책 제목

            # #searchBiblioList > li:nth-child(1) > dl > dt > a

            # #searchBiblioList > li:nth-child(2) > dl > dt > a

            bookTitleList = totalList.select('li > dl > dt > a') # type of list

            time.sleep(2) # 2초

            # 서브 디렉토리 생성 ====================================

            try:

                os.mkdir('Bookdir_{}'.format(p))

            except FileExistsError as e:

                print (e)

                sys.exit(1)

            # =====================================================

            # 디렉토리 이동

            os.chdir(os.getcwd() + '\\' + 'Bookdir_{}'.format(p))

            for im, ti in zip(imgList, bookTitleList):

                text_data = ti.text

                if text_data == None:

                    text_data = ti

                print (im.attrs['src'], text_data)

                # 이미지 다운로드

                try:

                    urlretrieve(im.attrs['src'], text_data + '_.jpg')

                except:

                    print ("이미지 저장 실패")

                    sys.exit(1)

                else:

                    print ("{} - 이미지 저장 성공".format(text_data))


            # 원래 디렉토리로 이동

            os.chdir('..')

            p += 1

            # 스크롤 다운

            self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

            # 페이지 이동

            try:

                self.driver.find_element_by_xpath(

                    '//*[@id="content"]/div[6]/a[{}]'.format(p)).click()

            except:

                # 더이상 이동할 페이지가 없으면 while 문을 탈출한다.

                break

            else:

                time.sleep(2)




def main():

    sNode = Cstu() # Cstu의 인스턴스 객체 생성

    sNode.url_requests()

    sNode.bookTitleCollector()

if __name__ == "__main__":

    main()

'언어 > python' 카테고리의 다른 글

OPENAPI  (0) 2018.12.21
기록 1  (0) 2018.12.15
selenium + pandas + 연습 중  (0) 2018.11.15
python selenium  (0) 2018.11.15
hexcolor 사이트 python 크롤링  (0) 2018.11.06

# ===========================================================

from selenium import webdriver

from selenium.webdriver.chrome.options import Options

from bs4 import BeautifulSoup

import pandas as pd

import pprint as ppr

import numpy as np

import re

# ===========================================================

options = Options() # 객체 생성

options.headless = True

driver = webdriver.Chrome(executable_path=r"C:\Users\sleep\Desktop\chrom_driver\chromedriver.exe",

                          chrome_options=options)


driver.get("https://ko.wikipedia.org/wiki/{0}".format("대한민국의_인구"))

assert "대한민국의 인구 - 위키백과, 우리 모두의 백과사전" in driver.title

print (driver.title)


html = driver.page_source

bsObject = BeautifulSoup(html, "html.parser")


f = bsObject.select('table.wikitable.sortable.jquery-tablesorter > tbody > tr')

info = dict()

for i in f:

    year = i.select_one("td:nth-of-type(1)") # 년도

    man_count = i.select_one("td:nth-of-type(2)")  # 년도

    year = re.sub("[\n, \t, \r]", "",  str(year.string))

    man_count = re.sub("[\n, \t, \r]", "",  str(man_count.string))

    info[year] = man_count


# ppr.pprint (info)



s = pd.Series(list(info.values()), index=list(info.keys()))

print (s)

'언어 > python' 카테고리의 다른 글

기록 1  (0) 2018.12.15
실패 -  (0) 2018.11.28
python selenium  (0) 2018.11.15
hexcolor 사이트 python 크롤링  (0) 2018.11.06
사람인 크롤링 (version 2.3 - 2018-11-07)  (2) 2018.11.05

python selenium

언어/python2018. 11. 15. 17:22

https://stackoverflow.com/questions/10629815/handle-multiple-windows-in-python

#-----------------------------------------------------

from selenium.webdriver.chrome.options import Options

from selenium import webdriver

from bs4 import BeautifulSoup

from openpyxl import Workbook

from openpyxl.styles import Color, PatternFill

import pprint as ppr

#-----------------------------------------------------

class STU(object):

    # 생성자

    def __init__(self):

        self.RealTimeChart = dict() # type of dictionary

        self.hexColorList = list() # type of list

        self.options = Options() # 객체 생성

        self.options.headless = True

        self.driver = webdriver.Chrome(executable_path=r"C:\Users\sleep\Desktop\chrom_driver\chromedriver.exe",

                                       chrome_options=self.options)

        self.html = None


        # Excel

        self.sheetIndex = [['B', 3], ['C', 3]]

        self.workBook = None

        self.workSheet = None


    # func (1)

    def get_url_requests(self):

        self.driver.get("https://www.naver.com/")

        assert "NAVER" in self.driver.title

        print (self.driver.title)

        html = BeautifulSoup(self.driver.page_source, "html.parser")

        tmp_li_list = html.find_all("span", {"class": "ah_k"})

        for n, i in enumerate(tmp_li_list):

            self.RealTimeChart[str(n+1) + "순위"] = i.string

            print("{0:02d} :  {1:s}".format(n + 1, i.string))

        self.driver.execute_script("window.open()") # 새로운 창 open

        self.driver.switch_to.window(self.driver.window_handles[1])


    # func (2)

    def get_hex_color_list(self):

        self.driver.get("https://www.color-hex.com/")

        assert "Color Hex Color Codes" in self.driver.title

        print (self.driver.title)

        html = BeautifulSoup(self.driver.page_source, "html.parser")

        tmp_color_lst = html.select("div.colordvcon > a")

        for i in tmp_color_lst:

            hexColorValue = str(i.attrs['title']).split(sep=' ')

            hexColorValue = hexColorValue[0]

            self.hexColorList.append(hexColorValue)

        ppr.pprint (self.hexColorList)


    # func (3)

    def xlWrite(self):

        self.workBook = Workbook() # 객체 생성

        self.workSheet = self.workBook.create_sheet(title="실시간 순위")

        # 셀에 너비 =====================================================

        self.workSheet.column_dimensions['B'].width = 8.1

        self.workSheet.column_dimensions['C'].width = 17.2

        # =============================================================

        self.workSheet[self.sheetIndex[0][0] + str(self.sheetIndex[0][1])] = "순위";self.sheetIndex[0][1]+=1

        self.workSheet[self.sheetIndex[1][0] + str(self.sheetIndex[1][1])] = "내용";self.sheetIndex[1][1]+=1



        for n, w in enumerate(self.RealTimeChart.items()):

            self.workSheet[self.sheetIndex[0][0] + str(self.sheetIndex[0][1])] = w[0]

            self.workSheet[self.sheetIndex[0][0] + str(self.sheetIndex[0][1])].fill = \

                PatternFill(patternType='solid', fgColor=Color(self.hexColorList[n][1:]))

            self.sheetIndex[0][1]+=1

            self.workSheet[self.sheetIndex[1][0] + str(self.sheetIndex[1][1])] = w[1]

            self.workSheet[self.sheetIndex[0][0] + str(self.sheetIndex[1][1])].fill = \

                PatternFill(patternType='solid', fgColor=Color(self.hexColorList[n][1:]))

            self.sheetIndex[1][1]+=1




    # 소멸자

    def __del__(self):

        self.workBook.save(r'C:\Users\sleep\Desktop\cor_list\cartList.xlsx')


def main():

    sNode = STU() # STU에 해당하는 인스턴스 객체 생성

    sNode.get_url_requests()

    sNode.get_hex_color_list()

    sNode.xlWrite()

if __name__ == "__main__":

    main()

'언어 > python' 카테고리의 다른 글

실패 -  (0) 2018.11.28
selenium + pandas + 연습 중  (0) 2018.11.15
hexcolor 사이트 python 크롤링  (0) 2018.11.06
사람인 크롤링 (version 2.3 - 2018-11-07)  (2) 2018.11.05
python mysql  (0) 2018.11.04

from selenium import webdriver

import pandas as pd

import time

from bs4 import BeautifulSoup

import re

import pprint as ppr

#==============================

class STU:

    def __init__(self):

        self.path = "C:\\Users\\sleep\\Desktop\\chrom_driver\\chromedriver.exe"

        self.driver = webdriver.Chrome(self.path)

        self.html = None

        self.bs_object = None

        self.color_info = dict() # dictionary

        self.target_url = "https://www.color-hex.com"

        """

        {'#1234':{'sub_url':'/#1234', 'list':[]}}

        """

    # Func (1)

    def step01(self):

        self.driver.get(self.target_url)

        # https://www.color-hex.com/color/750a64

        time.sleep(2)

        self.html = self.driver.page_source

        self.bs_object = BeautifulSoup(self.html, "html.parser")

        t = self.bs_object.select("div.colordvcon > a")

        for i in t:

            clr_key = str(i.attrs['title']).split(sep=" ")

            clr_key = clr_key[0][1:]

            self.color_info[clr_key] = {

                'sub_url':self.target_url + i.attrs['href'], # ex) /color/750a64

                'sub_color_list':[],

            }

        ppr.pprint (self.color_info)


        for n, k in enumerate(self.color_info.keys()):

            print ("{} 작업 중 ...".format(n+1))

            # 새창

            self.driver.execute_script("window.open()")

            self.driver.switch_to.window(self.driver.window_handles[1])

            self.driver.get(self.color_info[k]['sub_url'])

            time.sleep(3) # 3 seconds

            self.html = self.driver.page_source

            self.bs_object = BeautifulSoup(self.html, "html.parser")

            t = self.bs_object.find_all('div', {"class":"colordvconline"}) # type list

            for i in t:

                color_text = re.sub('[\n\t\r ]', '', i.text)

                self.color_info[k]['sub_color_list'].append(color_text)

                time.sleep(1)

            self.driver.close()

            # 원래 창으로 회귀

            self.driver.switch_to.window(self.driver.window_handles[0])

        self.driver.close()


    # Func (2)

    def step2(self):

        for k in self.color_info.keys():

            for i in k:

                ppr.pprint (self.color_info[i]['sub_color_list'])

def main():

    sNode = STU() # 인스턴스 객체 생성

    sNode.step01()

if __name__ == "__main__":

    main()


'언어 > python' 카테고리의 다른 글

selenium + pandas + 연습 중  (0) 2018.11.15
python selenium  (0) 2018.11.15
사람인 크롤링 (version 2.3 - 2018-11-07)  (2) 2018.11.05
python mysql  (0) 2018.11.04
간단한 주말 프로젝트  (0) 2018.11.03

#=============================================

import selenium.webdriver as selWeb

import openpyxl

from openpyxl.styles import Color, PatternFill

import time

import mysql.connector

from mysql.connector import Error, errorcode

import sys

from bs4 import BeautifulSoup

import datetime

import pprint as ppr

import re

import pymongo_stu

import Chat_pie

import os

#=============================================

class DB:

    # 생성자

    def __init__(self):

        self.user_Info = {'id': None, 'pw': None}

        self.database_conn_info = {

            'DB_ID': 'root',

            'DB_PW': '1234',

            'DB_SRV_IP': '127.0.0.1',

            'DB_name': 'saramin',

        }


    """

    func (1)

    MySQL server에 접근 

    """

    def F_db_connect(self):

        try: # 접근시도

            conn = mysql.connector.connect(

                user = self.database_conn_info['DB_ID'],        # user id

                password = self.database_conn_info['DB_PW'],    # user pw

                host = self.database_conn_info['DB_SRV_IP'],    # server ip

                database = self.database_conn_info['DB_name'])  # database


        except Error as err:

            if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:

                print ("접근 계정이 잘못된 것 같습니다.")

            elif err.errno == errorcode.ER_BAD_DB_ERROR:

                print ("해당 DB가 존재하지 않습니다.")

            else:

                print (err)

            sys.exit(1)

        else:

            print ("DB에 정상적으로 접근 되었습니다.")

            cursor = conn.cursor()

            try:

                sql = "SELECT * FROM `INFO`"

                cursor.execute(sql)

            except Error as err:

                if err.errno == errorcode.ER_NO_SYSTEM_TABLE_ACCESS_FOR_SYSTEM_TABLE:

                    print ("해당 Database에 table이 존재하지 않습니다.")

                else:

                    print (err)

                sys.exit(1)

            else:

                t_info = cursor.fetchone()

                self.user_Info['id'], self.user_Info['pw'] = t_info

                cursor.close()

                conn.close()


    """

        func (2)

        회사 이름 적재 

    """

    def F_table_data_insert(self, data_list):

        try: # 접근시도

            conn = mysql.connector.connect(

                user = self.database_conn_info['DB_ID'],        # user id

                password = self.database_conn_info['DB_PW'],    # user pw

                host = self.database_conn_info['DB_SRV_IP'],    # server ip

                database = self.database_conn_info['DB_name'])  # database

        except Error as err:

            if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:

                print ("접근 계정이 잘못된 것 같습니다.")

            elif err.errno == errorcode.ER_BAD_DB_ERROR:

                print ("해당 DB가 존재하지 않습니다.")

            else:

                print (err)

            sys.exit(1)

        else:

            print ("DB에 정상적으로 접근 되었습니다.")

            cursor = conn.cursor()

            sql = "INSERT INTO `cor_info` (c_name) VALUES (%s)"


            for i in data_list:

                try:

                    cursor.execute(sql, (i,))

                except Error as err:

                    if err.errno == errorcode.ER_INSERT_INFO:

                        print ("데이터 삽입이 이루어지지 못했습니다.")

                    else:

                        print (err)

                else:

                    print ("데이터 삽입 성공")


            conn.commit()

            cursor.close()

            conn.close()


class XL:

    # 생성자

    def __init__(self):

        # 디렉토리 이동

        self.current_work_dir = os.chdir("C:\\Users\\sleep\\Desktop\\cor_list")

        self.time_info = datetime.datetime.now().strftime("%Y-%m-%d")

        # self.readWb = openpyxl.load_workbook()

        self.wb = openpyxl.Workbook() #  workbook

        self.ws = None # worksheet

        self.wbRead = None

        self.xlIndx = [['c', 4], ['D', 4], ['E', 4], ['F', 4], ['G', 4], ['H', 4]]

        self.xlTag = ['회사이름', '내용', '조건1', '조건2', '위치', '마감일']

        self.me_support_cor_list = list() # 내가 지원한 회사 정보


    # func (1)

    """

    {'회사이름': '(주)지금컴퍼니', '조건1': '2년 up', '조건2': '고졸↑', '위치': '서울 송파구'}

    c_info_data => [ { ... } ]

    엑셀 적재 부분

    """

    def sheetSetting(self, c_info_data):

        # matplotlib을 사용하여 그래프

        label_data = {'경력무관': 0,

                      '신입': 0,

                      '신입 · 경력': 0,

                      '경력자': 0}

        # 엑셀에 데이터를 적재하는 부분]

        self.ws = self.wb.create_sheet(title=self.time_info)  # worksheet

        print ("sheet가 정상적으로 생성 되었습니다.")

        # 셀에 열너비 ========================================================

        self.ws.column_dimensions["C"].width = 28.9 # 회사이름

        self.ws.column_dimensions["D"].width = 60.1 # 내용

        self.ws.column_dimensions["E"].width = 14.7 # 조건1

        self.ws.column_dimensions["F"].width = 13.9 # 조건2

        self.ws.column_dimensions["G"].width = 17.9 # 위치

        self.ws.column_dimensions["H"].width = 11.0 # 마감일

        # ==================================================================

        for i, j in zip(self.xlIndx, self.xlTag):

            self.ws[i[0] + str(i[1])] = j; i[1] += 1


        t_num_i = ['B', 5]

        cnt = 1

        for e in c_info_data:

            for k, i in zip(e.keys(), self.xlIndx):

                self.ws[t_num_i[0] + str(t_num_i[1])] = cnt; # 번호

                self.ws[i[0]+str(i[1])] = e[k]


                if k == '조건1':

                    if e[k] == "경력무관":

                        self.ws[self.xlIndx[0][0] + str(self.xlIndx[0][1])].fill = \

                            PatternFill(patternType='solid', fgColor=Color('ff5e67'))

                        label_data["경력무관"] += 1

                    elif e[k] == "신입":

                        self.ws[self.xlIndx[0][0] + str(self.xlIndx[0][1])].fill = \

                            PatternFill(patternType='solid', fgColor=Color('b4eeb4'))

                        label_data["신입"] += 1

                    elif e[k] == "신입 · 경력":

                        self.ws[self.xlIndx[0][0] + str(self.xlIndx[0][1])].fill = \

                            PatternFill(patternType='solid', fgColor=Color('efc253'))

                        label_data["신입 · 경력"] += 1

                    else:

                        self.ws[self.xlIndx[0][0] + str(self.xlIndx[0][1])].fill = \

                            PatternFill(patternType='solid', fgColor=Color('969696'))

                        label_data["경력자"] += 1


            for tmp in self.xlIndx:

                tmp[1] += 1

            cnt += 1

            t_num_i[1] += 1


        # 데이터 적재 후 저장

        self.wb.save("today_{}.xlsx".format(datetime.datetime.now().strftime("%M")))

        # 그래프 출력 함수

        Chat_pie.pie_chart(label_data)


    '''

    def readXlfile(self):

        for xf in os.listdir():

            fname, fexf = os.path.splitext(xf)

            """

            fname : 확장자를 제외한 파일 이름/ fexf : 파일 확장자

            """

            if fexf == ".xlsx":

                # 엑셀 파일 read

                self.wbRead = openpyxl.load_workbook(filename=xf)

                tmp_filter = re.compile(pattern='(\d{4})-(\d{2})-(\d{2}')

                for s in self.wbRead.sheetnames:

                    if tmp_filter.search(s):

                        print (s)

    '''

class STU01(XL, DB, pymongo_stu.MongoDBstu):

    def __init__(self):

        XL.__init__(self) # 부모 클래스 초기화

        DB.__init__(self) # 부모 클래스 초기화

        pymongo_stu.MongoDBstu.__init__(self) # 부모 클래스 초기화

        # ===============================================================

        self.target_url = "https://www.saramin.co.kr/zf_user/"

        self.chromDriver_path = "C:\\Users\\sleep\\Desktop\\chrom_driver\\chromedriver.exe"

        self.selHandler = None

        self.html = None

        self.saramin_data = list() # 사람인에 지원한 회사 리스트

        """

        날짜, 시간, 회사, 지원

        """

        self.day_filter = re.compile("(\d{4})-(\d{2})-(\d{2})")

        self.time_filter = re.compile("(\d{2}):(\d{2}):(\d{2})")

    """

    func (2)

    """

    def F_web_requests(self):

        """ 사람인 사이트에 접근 시도 """

        self.selHandler = selWeb.Chrome(executable_path=self.chromDriver_path)

        self.selHandler.get(url=self.target_url)

        time.sleep(2)

        assert "사람인" in self.selHandler.title

        self.selHandler.find_element_by_id('login_person_id').send_keys(self.user_Info['id'])

        self.selHandler.find_element_by_id('login_person_pwd').send_keys(self.user_Info['pw'])

        self.selHandler.find_element_by_xpath('//*[@id="login_frm"]/fieldset/div/button').click()

        time.sleep(2)

        """ 

        전체 스크린 

        : 전체 스크린을 하지 않으면 아바타서치 버튼이 활성화가 안됨

        """

        self.selHandler.fullscreen_window()

        # 아바타 서치 : a_tag

        time.sleep(2)

        self.selHandler.find_element_by_link_text('아바타서치').click()

        time.sleep(2)


        self.selHandler.execute_script("window.scrollTo(0, document.body.scrollHeight);")

        temp = self.selHandler.page_source

        self.html = BeautifulSoup(temp, "html.parser")


        lis_avatar = self.html.find("div", {"class":"list_avatar"})

        data_list = lis_avatar.find_all("ul", {"class":"info_list"})

        date_list = lis_avatar.select("div.date > span") # 날짜 정보

        self.selHandler.close()  # selenium 닫기

        """

        데이터 조회

            "회사이름":None, # 구글

            "내용":None,    # 서울아산병원 DeepBrain 연구실 및 회사 연구원 채용

            "조건1":None,   # 신입, 경력

            "조건2":None,   # 대학

            "위치":None     # 서울

        """

        for v, d in zip(data_list, date_list):

            t_insert = {"회사이름":None, "내용":None, "조건1":None,

                        "조건2":None, "위치":None, "마감날짜":None}

            # =====================================================

            # 1. 회사명

            c_name = v.select_one("li.company_name.avatar_list > a")

            c_name = c_name.string

            t_insert["회사이름"] = c_name

            # =====================================================

            # 2. 내용

            c_text = v.select_one("li.recruit_name > a")

            c_text = c_text.string

            t_insert["내용"] = c_text

            # =====================================================

            # 3.

            t = v.select("li.recruit_sector > a > span")

            t_0 = str(t[0].string)

            if '↑' in t_0:

                t_0 = t_0.replace('↑', ' up')

            t_1 = str(t[1].string)

            if '↑' in t_1:

                t_1 = t_1.replace('↑', ' up')

            t_insert["조건1"] = t_0  # ex) 신입 - 1. 빨/ 2. 노/ 3. 초

            t_insert["조건2"] = t_1  # ex) 대학교(4년)

            t_insert["위치"] = t[2].string   # ex) 서울 강남구

            # =====================================================

            # 4. 마감날짜

            t_insert["마감날짜"] = d.string

            # =====================================================

            # print("{0} :  {1}".format(indx+1, c_name))

            self.saramin_data.append(t_insert)


    """

    func (4)

    """

    def F_data_check(self):

        for indx, valu in enumerate(self.saramin_data):

            print (indx+1, ": ", valu)

        self.sheetSetting(self.saramin_data)


    """

    func (5)

    : 지원 list (Saram IN)

    """

    def F_saramin_supp_list(self):

        """ 사람인 사이트에 접근 시도 """

        self.selHandler = selWeb.Chrome(executable_path=self.chromDriver_path)

        self.selHandler.get(url=self.target_url)

        time.sleep(2)

        assert "사람인" in self.selHandler.title

        self.selHandler.find_element_by_id('login_person_id').send_keys(self.user_Info['id'])

        self.selHandler.find_element_by_id('login_person_pwd').send_keys(self.user_Info['pw'])

        self.selHandler.find_element_by_xpath('//*[@id="login_frm"]/fieldset/div/button').click()

        time.sleep(2)


        self.selHandler.find_element_by_link_text("지원현황").click()

        print ("지원현황 리스트를 확인 중 입니다.")

        time.sleep(2) # 2초 딜레이

        # 처음 페이지 ===============================================================

        t_html = self.selHandler.page_source

        html = BeautifulSoup(t_html, "html.parser")

        list_v = html.select_one("#applyStatusList > tbody")

        # 날짜/ 시간 정보

        info_day = list_v.select("tr > td.apply_date_row")

        info_day = [re.sub("[\n,\r,\t, ,]", "", i.text) for i in info_day]

        # 회사 이름

        cor_name = list_v.select("tr > td.apply_comp > a")

        cor_name = [e.attrs['title'] for e in cor_name]

        # 지원 내역

        info_sup = list_v.select("tr > td.apply_comp_cont > strong > a")

        info_sup = [e.attrs['title'] for e in info_sup]


        for d, c, s in zip(info_day, cor_name, info_sup):

            tmp_data = {"날짜":None, "시간":None, "회사":None, "지원":None}

            d_result = self.day_filter.search(d)

            t_result = self.time_filter.search(d)

            if d_result and t_result:

                # 날짜 정보

                indx = d_result.span()

                result_day = d[indx[0]:indx[1]]

                # 시간 정보

                indx = t_result.span()

                result_time = d[indx[0]:indx[1]]

                """

                    날짜, 시간, 회사, 지원

                """

                tmp_data['날짜'] = result_day

                tmp_data['시간'] = result_time

                tmp_data['회사'] = c

                tmp_data['지원'] = s

                self.saramin_data.append(tmp_data) # 데이터 적재

                # print (result_day, result_time, c, s)

        # =========================================================================

        page_list = self.selHandler.find_elements_by_css_selector("#content > div > div.manage_list_wrap > div.page_nation > a")

        for p in page_list:

            p.click() # 페이지 클릭

            t_html = self.selHandler.page_source

            html = BeautifulSoup(t_html, "html.parser")

            list_v = html.select_one("#applyStatusList > tbody")

            # 날짜/ 시간 정보

            info_day = list_v.select("tr > td.apply_date_row")

            info_day = [re.sub("[\n,\r,\t, ,]", "", i.text) for i in info_day]

            # 회사 이름

            cor_name = list_v.select("tr > td.apply_comp > a")

            cor_name = [e.attrs['title'] for e in cor_name]

            # 지원 내역

            info_sup = list_v.select("tr > td.apply_comp_cont > strong > a")

            info_sup = [e.attrs['title'] for e in info_sup]


            for d, c, s in zip(info_day, cor_name, info_sup):

                tmp_data = {"날짜": None, "시간": None, "회사": None, "지원": None}

                d_result = self.day_filter.search(d)

                t_result = self.time_filter.search(d)

                if d_result and t_result:

                    # 날짜 정보

                    indx = d_result.span()

                    result_day = d[indx[0]:indx[1]]

                    # 시간 정보

                    indx = t_result.span()

                    result_time = d[indx[0]:indx[1]]

                    """

                        날짜, 시간, 회사, 지원

                    """

                    tmp_data['날짜'] = result_day

                    tmp_data['시간'] = result_time

                    tmp_data['회사'] = c

                    tmp_data['지원'] = s

                    self.saramin_data.append(tmp_data)  # 데이터 적재

                    # print(result_day, result_time, c, s)

            time.sleep(2)

        # =========================================================================

        """

        데이터 출력

        """

        for i, u in enumerate(self.saramin_data):

            print ("{} :  {}".format(i+1, u))


        """

        MongoDB에 데이터 적재

        """

        self.mongodb_insert(element=self.saramin_data)


    # 소멸자

    # def __del__(self):

    #     self.wb.save("today.xlsx")


def main():

    sNode = STU01()        # 객체생성

    sNode.F_db_connect()   # 사람인 로그인 계정

    """

        내게 추천하는 회사 정보를 보시겠습니까? 

        본다 (Y) / 안본다 (N)

    """

    sNode.F_web_requests() # 사람인 사이트 요청

    sNode.F_data_check()

    """

        사람인 사이트에서 지원환 회사 정보들

    """

    # sNode.F_saramin_supp_list()


if __name__ == "__main__":

    main()



'언어 > python' 카테고리의 다른 글

python selenium  (0) 2018.11.15
hexcolor 사이트 python 크롤링  (0) 2018.11.06
python mysql  (0) 2018.11.04
간단한 주말 프로젝트  (0) 2018.11.03
카라바오 컵 파이썬 크롤링  (0) 2018.11.01

python mysql

언어/python2018. 11. 4. 19:44
import mysql.connector
from mysql.connector import Error, errorcode
import sys
#=================================================
class DB:
# 생성자
def __init__(self):
self.db_connect = None
self.cursor = None

# FUNC (1) instance method
"""
DB 서버 접근 메서드
"""
def MysqlDB_connect(self):
try: # DB에 접근 시도
self.db_connect = mysql.connector.connect(
user='root', password='1234',
host='127.0.0.1')
except Error as err:
if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
print ("Something is wrong with your user name or password")
else:
print (err)
sys.exit(1)
else:
print ("MySQL server 접근 시도 성공")
self.cursur = self.db_connect.cursor()
# FUNC (2) instance method
"""
데이터 베이스(HEX_COLOR) 생성 인스턴스 메서드
"""
def DB_create(self):
temp_create_name = "HEX_COLOR"
sql = "CREATE DATABASE {}".format(temp_create_name)
try: # database 생성 시도
self.cursur.execute(sql)
except Error as err:
if err.errno == errorcode.ER_CANT_CREATE_DB:
print ("Database 생성 시도 실패")
else:
print (err)
sys.exit(1)
else:
print ("Database 생성 시도 성공".format(temp_create_name))

# FUNC (3) instance method
"""
데이터 베이스(HEX_COLOR) 접근 인스턴스 메서드
"""
def DB_access(self):
DB_access_name = "HEX_COLOR"
sql = "USE {}".format(DB_access_name)
try: # DB 접근 시도
self.cursur.execute(sql)
except Error as err:
if err.errno == errorcode.ER_BAD_DB_ERROR:
print ("접근하고자 하는 데이터베이스가 존재하지 않습니다.")
else:
print (err)
sys.exit(1)
else:
print ("{} 접근 시도 성공".format(DB_access_name))

# FUNC (4) instance method
"""
테이블 생성 인스턴스 메서드
"""
def Table_create(self):
create_table_name = "hex_color_url"
sql = "" \
"CREATE table {}(" \
" url_hex_color varchar(50) primary key" \
")".format(create_table_name)
try: # DB 접근 시도
self.cursur.execute(sql)
except Error as err:
if err.errno == errorcode.ER_CANT_CREATE_TABLE:
print ("테이블 생성 실패")
else:
print (err)
sys.exit(1)
else:
print ("{} 생성 시도 성공".format(create_table_name))



'언어 > python' 카테고리의 다른 글

hexcolor 사이트 python 크롤링  (0) 2018.11.06
사람인 크롤링 (version 2.3 - 2018-11-07)  (2) 2018.11.05
간단한 주말 프로젝트  (0) 2018.11.03
카라바오 컵 파이썬 크롤링  (0) 2018.11.01
맛집 크롤링  (0) 2018.10.31

# =======================================

from selenium import webdriver

from bs4 import BeautifulSoup

import mysql.connector

from mysql.connector import errorcode

import sys

import time

from bs4 import BeautifulSoup

# =======================================


class DBmysql:

    # 생성자

    def __init__(self):

        self.conn_info = {

            'user':'root',       # user id

            'password':'1234',   # user pw

            'host':'127.0.0.1',  # mysql server ip address

            'database':'college'

        }

        self.conn = None

        self.cursor = None


    # func (1) : 데이터 베이스 생성 > 테이블 생성

    def serverConn(self):

        try:

            self.conn = mysql.connector.connect(

                user=self.conn_info['user'],

                password=self.conn_info['password'],

                host=self.conn_info['host']

            )

        except mysql.connector.Error as err:

            if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:

                print ("계정 정보가 잘못된것 같습니다.")

            else:

                print (err)

            sys.exit(1)


        print ("[1] DB server connect success ... !!!")

        self.cursor = self.conn.cursor()

        # 데이터 베이스 생성

        try:

            sql = "CREATE DATABASE {}".format(self.conn_info['database'])

            self.cursor.execute(sql)

        except mysql.connector.Error as err:

            if err.errno == errorcode.ER_DB_CREATE_EXISTS:

                print ("Database 생성 에러")

            else:

                print (err)

            sys.exit(1)

        else: # 데이터 베이스 생성 성공

            print ("[2] 데이터 베이스 생성 성공")

            try: # 데이터 베이스 접근 시도

                self.cursor.execute('USE college')

            except:

                print ("DB 접근 실패")

            else:

                """

                c_name : 대학이름

                l_name : 지역이름

                """

                sql = "CREATE TABLE college_info (" \

                      " c_name varchar(30) PRIMARY KEY," \

                      " l_name varchar(30)" \

                      ")"

                try: # 테이블 생성 시도

                    self.cursor.execute(sql)

                except:

                    print ("테이블 생성 시도 실패")

                else:

                    print ("테이블 생성 성공")

                    self.conn.close()


    def dataInsert(self, insrtv):

        try:

            # DB 접근

            self.conn = mysql.connector.connect(

                user=self.conn_info['user'],          # user id

                password=self.conn_info['password'],  # user pw

                host=self.conn_info['host'],          # DB server ip address

                database= self.conn_info['database']  # Database name

            )

        except mysql.connector.Error as err:

            if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:

                print ("접근 계정의 정보(id or pw)가 잘못된 것 같습니다.")

            elif err.errno == errorcode.ER_BAD_DB_ERROR:

                print ("접근 하고자 하는 DB 정보가 잘못된 것 같습니다.")

            else:

                print (err)

            sys.exit(1)

        else:

            print ("DB 접근 성공 ...")

            sql = "INSERT INTO `college_info`(c_name, l_name) VALUES (%s, %s)"

            self.cursor = self.conn.cursor() # 객체 생성

            for k, v in insrtv.items():

                for i in v:

                    self.cursor.execute(sql, (i, k))


            print ("DB 적재 성공 ...")

            self.conn.commit() # 이 부분을 안하면 DB에 반영이 안된다.


class STU(DBmysql):

    def __init__(self):

        DBmysql.__init__(self) # 부모 클래스 초기화

        self.webDriver = None

        self.html = None

        self.bsObj = None

        self.local_colleges = {

            "경기도":list(),

            "강원도":list(),

            "충청도":list(),

            "전라도":list(),

            "경상도":list(),

            "제주도":list()

        }

    # func (1)

    def seleniumDriv(self):

        self.webDriver = \

            webdriver.Chrome("C:\\Users\\sleep\\Desktop\\chrom_driver\\chromedriver.exe")

        self.webDriver.get("https://www.naver.com/")

        time.sleep(2) # 2 seconds ...

        self.webDriver.find_element_by_id('query').send_keys("전국대학교")

        time.sleep(2) # 2 seconds ...

        self.webDriver.find_element_by_class_name("ico_search_submit").click()

        '''

        경기도 : //*[@id="main_pack"]/div[2]/div/div[2]/div[1]/ul/li[1]/ul/li[3]/a

        강원도 : //*[@id="main_pack"]/div[2]/div/div[2]/div[1]/ul/li[1]/ul/li[4]/a

        충청도 : //*[@id="main_pack"]/div[2]/div/div[2]/div[1]/ul/li[1]/ul/li[5]/a        

        전라도 : //*[@id="main_pack"]/div[1]/div/div[2]/div[1]/ul/li[1]/ul/li[6]/a

        경상도 : //*[@id="main_pack"]/div[1]/div/div[2]/div[1]/ul/li[1]/ul/li[7]/a

        제주도 : //*[@id="main_pack"]/div[1]/div/div[2]/div[1]/ul/li[1]/ul/li[8]/a

        '''

        local_dict = {

            "경기도":[2, 3], "강원도":[2, 4], "충청도":[2, 5],

            "전라도":[1, 6], "경상도":[1, 7], "제주도":[1, 8]

        }

        for k, v in local_dict.items():

            btn = \

                '//*[@id="main_pack"]/div[{}]/div/div[2]/div[1]/ul/li[1]/ul/li[{}]/a'.\

                    format(v[0], v[1])

            self.webDriver.find_element_by_xpath(btn).click()

            print ("current url: {}".format(self.webDriver.current_url))

            self.html = self.webDriver.page_source

            self.bsObj = BeautifulSoup(self.html, "html.parser")

            time.sleep(2)  # 2 seconds

            element = self.bsObj.select("ul.lst_txt.no_dot > li > a")

            for i in element:

                print (i.text)

                self.local_colleges[k].append(i.text)

            time.sleep(2)  # 2 seconds


        self.dataInsert(self.local_colleges) # function call


def main():

    node = STU() # 객체 생성

    node.serverConn() # 테이블 생성

    node.seleniumDriv() # 크롤링 데이터 수집


if __name__ == "__main__":

    main()





=====================================================================================

from flask import Flask, request, render_template

import pymysql


conn = pymysql.connect(

    host = "127.0.0.1",

    user = "root",

    password = "1234",

    db = "college")


app = Flask(__name__)


@app.route("/")

def RootURL():

    cursor = conn.cursor() # 객체 생성

    sql = "SELECT * FROM college_info"

    cursor.execute(sql)

    results = cursor.fetchall()

    return render_template('index.html', results=results)


if __name__ == "__main__":

    app.run(host='0.0.0.0',

            port=5555,

            debug=True)




=====================================================================================

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div>
        {% for row in results %}
            <tr>
                <td>{{ row }}<br /></td>
            </tr>
        {% endfor %}
    </div>
</body>
</html>


'언어 > python' 카테고리의 다른 글

사람인 크롤링 (version 2.3 - 2018-11-07)  (2) 2018.11.05
python mysql  (0) 2018.11.04
카라바오 컵 파이썬 크롤링  (0) 2018.11.01
맛집 크롤링  (0) 2018.10.31
selenium - 테스트 코드  (0) 2018.10.30

from selenium import webdriver

import requests

import pprint as ppr

import time

from bs4 import BeautifulSoup

import re

import openpyxl

from openpyxl.styles import Font, Alignment, PatternFill, Color

#===============================

class VISUAL:

    def __init__(self):

        self.wb = openpyxl.Workbook() # 객체 생성

        self.ws = None # workSheet

        self.excelIndex = [chr(i) for i in range(ord('B'), ord('I')+1)]

        self.FristIndex = ['날짜', '경기시작_시간', '팀L', '점수', '-', '점수', '팀R', '경기장']

        self.IndexWidth = [8.7, 13.2, 25, 8.1, 1.5, 8.1, 25, 17.2]


class SELEN:

    def __init__(self):

        # chrome driver

        self.path = "C:\\Users\\sleep\\Desktop\\chrom_driver\\chromedriver.exe"

        self.chrome_driver = webdriver.Chrome(self.path)


class STU(SELEN, VISUAL):

    def __init__(self):

        VISUAL.__init__(self)

        SELEN.__init__(self)

        # Instance variable

        self.target_url = "https://www.naver.com/"

        self.day_list = {"32강":['schedule_20180926',

                                'schedule_20180927',

                                'schedule_20181003 last'],

                         "16강":['schedule_20181101']}

        self.html = None

        self.bs_obj = None

        self.information = {

            "32강":[],

            "16강":[]

        }

    # Instance method

    # func (1)

    def urlReguests(self):

        self.chrome_driver.get(self.target_url)

        time.sleep(2) # 2 second

        # 검섹어 입력

        self.chrome_driver.find_element_by_id('query').send_keys('카라바오컵')

        self.chrome_driver.find_element_by_xpath('//*[@id="search_btn"]/span[2]').click()

        time.sleep(2) # 2 second


    """ 

    32강 : //*[@id="_calLayerBaseSportsDbSearch"]/div[2]/div/div[3]/ul/li[1]/a

    16강 : //*[@id="_calLayerBaseSportsDbSearch"]/div[2]/div/div[3]/ul/li[2]/a

    """

    # func (2)

    def htmlURL(self):

        tpage = {

            "32강":1,

            "16강":2

        }

        for key, p in tpage.items():

            # 페이지 switch

            tmp_bnt = '//*[@id="_calLayerBaseSportsDbSearch"]/div[2]/div/div[3]/ul/li[{}]/a'.format(p)

            self.chrome_driver.find_element_by_xpath(tmp_bnt).click()

            time.sleep(1)

            self.html = self.chrome_driver.page_source

            time.sleep(3)

            self.bs_obj = BeautifulSoup(self.html, "html.parser")

            # #강 - 날짜

            t = [k for k in self.day_list[key]]

            fnum = re.compile("\d{8}")

            for i in t:

                indx = fnum.search(i).span()

                print(i[indx[0]:indx[1]], " : 작업 중 ...")

                tmp_day_info = self.bs_obj.find_all("tr", {"class": i})

                time.sleep(2)

                for s in tmp_day_info:

                    # ==========================================

                    # 날짜

                    t_day = s.find("td", {'class': 'date tp4'})

                    t_day = t_day.string

                    # 시간

                    t_time = s.find("td", {'class': 'time tp4'})

                    t_time = t_time.string

                    # 경기장

                    t_stadium = s.select("p.elps > a")

                    t_stadium = t_stadium[0].attrs['title']

                    # left_team_infomation

                    left_team = s.select("td.score.mgn.tp4 > a.match > em.team_lft.team_lft2")

                    left_team = left_team[0].attrs['title']

                    # left_team_score

                    left_score = s.select("span.score_lft")

                    left_score = left_score[0].text

                    # right_team_infomation

                    rigth_team = s.select("td.score.mgn.tp4 > a.match > em.team_rgt.team_rgt2")

                    rigth_team = rigth_team[0].attrs['title']

                    # right_team_score

                    right_score = s.select("span.score_rgt")

                    right_score = right_score[0].text

                    # ==========================================

                    tmp_info = {

                       "날짜": None,

                       "경기 시작 시간": None,

                       "경기 결과": {

                           'LEFT':{

                               'Name':None,

                               'Score':None},

                           'RIGH':{

                               'Name': None,

                               'Score': None}},

                       "경기장": None}


                    tmp_info['날짜'] = t_day

                    tmp_info['경기 시작 시간'] = t_time

                    tmp_info["경기 결과"]['LEFT']['Name'] = left_team

                    tmp_info["경기 결과"]['LEFT']['Score'] = left_score

                    tmp_info["경기 결과"]['RIGH']['Name'] = rigth_team

                    tmp_info["경기 결과"]['RIGH']['Score'] = right_score

                    tmp_info['경기장'] = t_stadium

                    self.information[key].append(tmp_info)


    def visualDo(self):

        for k in self.information.keys():

            self.ws = self.wb.create_sheet("CarabaoCup_"+k)

            self.ws['B4'] = k

            # Frist

            num = 6

            for i in zip(self.excelIndex, self.FristIndex, self.IndexWidth):

                self.ws[i[0]+str(num)] = i[1]

                self.ws.column_dimensions[i[0]].width = i[2]


            num += 1

            # Data insert

            for element in self.information[k]:

                inx = 0

                # 날짜 데이터

                self.ws[self.excelIndex[inx] + str(num)] = element['날짜'];inx += 1

                # 시간 데이터

                self.ws[self.excelIndex[inx] + str(num)] = element['경기 시작 시간']

                self.ws[self.excelIndex[inx] + str(num)].alignment = \

                    Alignment(horizontal='center', vertical='center');inx += 1

                # 팀 left ================================================

                # 팀 이름

                self.ws[self.excelIndex[inx] + str(num)] = \

                    element['경기 결과']['LEFT']['Name']

                self.ws[self.excelIndex[inx] + str(num)].font = \

                    Font(color='87a8ee')

                self.ws[self.excelIndex[inx] + str(num)].alignment = \

                Alignment(horizontal='right', vertical='center');inx += 1

                # 팀 score

                # ========================================================

                score_left = False

                score_right = False

                if element['경기 결과']['LEFT']['Score'] > element['경기 결과']['RIGH']['Score']:

                    score_left = True

                elif element['경기 결과']['LEFT']['Score'] < element['경기 결과']['RIGH']['Score']:

                    score_right = True

                # ========================================================

                self.ws[self.excelIndex[inx] + str(num)] = \

                    str(element['경기 결과']['LEFT']['Score'])

                self.ws[self.excelIndex[inx] + str(num)].alignment = \

                    Alignment(horizontal='right', vertical='center')

                self.ws[self.excelIndex[inx] + str(num)].font = \

                    Font(bold=True)

                if score_left:

                    self.ws[self.excelIndex[inx] + str(num)].font = \

                    Font(color="ca054d", bold=True)

                self.ws[self.excelIndex [inx] + str(num)].fill = \

                    PatternFill(patternType='solid', fgColor=Color('d8d8d5'));inx += 1


                self.ws[self.excelIndex[inx] + str(num)] = ":";inx += 1


                # 팀 right ===============================================

                # 팀 score

                self.ws[self.excelIndex[inx] + str(num)] = \

                    str(element['경기 결과']['RIGH']['Score'])

                self.ws[self.excelIndex[inx] + str(num)].font = \

                    Font(bold=True)

                if score_right:

                    self.ws[self.excelIndex[inx] + str(num)].font = \

                    Font(color="ca054d", bold=True)

                self.ws[self.excelIndex[inx] + str(num)].fill = \

                    PatternFill(patternType='solid', fgColor=Color('d8d8d5'));inx += 1


                # 팀 이름

                self.ws[self.excelIndex[inx] + str(num)] = \

                    element['경기 결과']['RIGH']['Name']

                self.ws[self.excelIndex[inx] + str(num)].font = \

                    Font(color='87a8ee');inx += 1

                self.ws[self.excelIndex[inx] + str(num)] = \

                    element['경기장'];


                num += 1


    def __del__(self):

        self.wb.save("CarabaoCup.xlsx")

        print ("excel 저장 성공")


def main():

    stuNode = STU() # 객체 생성

    stuNode.urlReguests()

    stuNode.htmlURL()

    stuNode.visualDo()


if __name__ == "__main__":

    main()

'언어 > python' 카테고리의 다른 글

python mysql  (0) 2018.11.04
간단한 주말 프로젝트  (0) 2018.11.03
맛집 크롤링  (0) 2018.10.31
selenium - 테스트 코드  (0) 2018.10.30
pygame _ 연습2  (0) 2018.10.27

맛집 크롤링

언어/python2018. 10. 31. 00:22

# =================================

from selenium import webdriver

from bs4 import BeautifulSoup

from tinydb import TinyDB

import time

import pprint as ppr

# =================================

class DBstu:

    # 생성자

    def __init__(self):

        # DB 생성

        self.DB = TinyDB("eatList.db")

        # 테이블 선택

        self.user = self.DB.table("MOM")


class CWAL(DBstu):

    # 생성자

    def __init__(self):

        DBstu.__init__(self)

        # driver 위치

        self.driver = webdriver.Chrome("C:\\Users\\sleep\\Desktop\\chrom_driver\\chromedriver.exe")

        self.html = None

        self.bsObject = None

        self.titleList = []

        # ============================

        self.naverReq() # func call


    # func (1)

    def naverReq(self):

        self.driver.get("https://www.naver.com/")

        time.sleep(2) # 2초

        self.driver.find_element_by_id("query").send_keys("부천 맛집")

        self.driver.find_element_by_id("search_btn").click()

        time.sleep(2) # 2초

        # ============================

        self.bsReq() # func call


    # func (2)

    def bsReq(self):

        # //*[@id="place_main_ct"]/div/div/div[2]/div[4]/div/a[2]

        page = 1

        while True:

            print("{0:02d}:page 작업 중 ...".format(page))

            self.html = self.driver.page_source

            self.bsObject = BeautifulSoup(self.html, "html.parser")

            tmp = self.bsObject.find_all("div", {"class":"list_item_inner "})

            """ tmp : list """

            for i in tmp:

                tmpDict = {}

                n = i.select_one("div.info_area > div.tit > span.tit_inner > a.name")

                p = i.select("div.info_area > div.etc_area.ellp > span.item")

                r = '' # empty

                # ========================

                try:

                    result = p[1]

                except:

                    pass

                else:

                    r = result.text

                finally:

                    time.sleep(3)  # 3초

                # ========================

                tmpDict[n.attrs['title']] = r

                self.titleList.append(tmpDict)


            # page next

            self.driver.find_element_by_xpath('//*[@id="place_main_ct"]/div/div/div[2]/div[4]/div/a[2]').click()

            time.sleep(3)

            if page == 20: break

            else: page += 1


        # ============================

        self.dataPrintf() # func call


    # func (3)

    def dataPrintf(self):

        for i in self.titleList:

            for k, v in i.items():

                self.user.insert({"가게이름":k, "가격":v})

                print("가게 이름: {} , 가격: {} ... 적재 성공".format(k, v))

def main():

    bsNode = CWAL() # 객체 생성


if __name__ == "__main__":

    main()

'언어 > python' 카테고리의 다른 글

간단한 주말 프로젝트  (0) 2018.11.03
카라바오 컵 파이썬 크롤링  (0) 2018.11.01
selenium - 테스트 코드  (0) 2018.10.30
pygame _ 연습2  (0) 2018.10.27
pygame _ 연습중  (0) 2018.10.27