일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- stack
- MacOS
- 웹뷰
- Git
- Code
- appstore
- Apple
- Notification
- SwiftUI
- Archive
- Session
- rxswift
- view
- window
- mac
- IOS
- Firebase
- iOS16
- UIButton
- Swift
- 개발자
- Xcode
- darkmode
- FLUTTER
- Realm
- error
- Python
- 한글
- github
- JPA
- Today
- Total
목록Server (16)
EEYatHo 앱 깎는 이야기
터미널로 입력받기 string = input("입력하세요 >> ") pyautogui 라이브러리로 입력받기 import pyautogui string = pyautogui.prompt("입력하세요 >> ")
0. 들어가기 전, 참고사항 macOS 환경. python3 으로 간단한 웹 서버 구현. LGU+ wifi 100 공유기 모델명: CAPD-6000 를 사용. 포트넘버는 9999를 사용. 1. 로컬서버 열기 1. html 생성 ( testHtml.html ) 2. 커맨드창에서 html 디렉토리로 이동 ( 나같은 경우 Desktop ) cd /Users/{사용자명}/Desktop 3. python3 -m http.server 9999 입력 python3 -m http.server 9999 4. http://localhost:9999/testHtml.html 으로 로컬서버 열린 것 확인 가능. 2. 포트포워딩 1. 커맨드창에서 ifconfig | grep inet 입력 ifconfig | grep inet ..
CSV csv 라이브러리 사용 csv 파일 생성 import csv f = open(r"{원하는경로}/data.csv", 'w') csvWriter = csv.writer(f) csv row 한 줄 작성 name = "아이폰 13" price = "1000000" option = "Black" csvWriter.writerow([name, price, option]) csv 파일 닫기(저장) f.close() XLSX openpyxl 라이브러리 사용 xlsx 객체 생성 import openpyxl # 새로 xlsx을 만드는 경우 workbook = openpyxl.Workbook() # 이미 있는 xlsx을 불러오는 경우 filePath = r"{엑셀파일경로}/엑셀파일이름.xlsx" workbook = ..
while while [조건]: 탈출 : break 생략 : continue i = 0 while i < 5: i += 1 print(i) # 1, 2, 3, 4, 5 i = 0 while i < 5: i += 1 if i == 2: break print(i) # 1, 2 i = 0 while i < 5: i += 1 if i % 2 == 0: continue print(i) # 1, 3, 5 for for i in [배열]: 배열 원소 하나씩 접근 for i in range(시작, 끝, 단계): 시작은 기본값 0, 끝은 required, 단계는 기본값 1 range 인자가 1개 = 끝 값에 해당됨 range 인자가 2개 = 시작, 끝 값에 해당됨 range 인자가 3개 = 시작, 끝, 단계 값에 해당됨..
selenium 원래는 웹 어플리케이션 테스트 도구. 하지만 크롤링에서 많이 쓰이게 됨. 페이지 로딩 및 태그 선택 from selenium import webdriver # 브라우저 생성 browser = webdriver.Chrome("{chromedriver파일경로}") # 네이버 열기 browser.get("https://www.naver.com") browser.implicitly_wait(10) # 웹사이트 로딩 10초 기다려주기 (10초 안에 로딩되면 바로 넘어감) # 쇼핑 메뉴 열기 browser.find_element(By.CSS_SELECTOR, value="a.nav.shop").click() 클릭 및 문자 입력 from selenium.webdriver.common.keys impo..
requests + beautifulSoup 크롤링을 하는 한 방법 html을 쉽게 불러올 수 있는 requests 라이브러리와, html을 사용하기 쉽게 파싱해주는 beautifulSoup 라이브러리를 사용하여, 원하는 태그를 찾고 데이터를 크롤링함 한계점 로그인이 필요한 페이지를 크롤링하기 매우 힘듦 ( 세션관리.. ) 동적페이지를 크롤링 할 수 없음 ( 동적 페이지는 selenium 사용 ) 사용법 페이지 로딩 및 태그 선택 import requests from bs4 import BeautifulSoup # html 가져오기 response = requests.get("https://www.naver.com") html = response.text # BeautifulSoup 를 사용 # html..
페이지 종류 정적 페이지 url이 같다면 같은 페이지. 일반적인 페이지. 크롤링 방법 = requests + beautifulSoup 동적 페이지 url은 같은데, html이 동적으로 변하는 페이지. 스크롤이나 클릭시 상품 데이터가 더 생기는 등. (ex. 네이버 쇼핑 검색결과 페이지) 크롤링 방법 = selenium 태그 구성요소 태그명 속성명 속성값 내용 내용 CSS 선택자 크롤링하려면, 내가 원하는 내용이 들어있는 태그를 찾아야한다. 해당 태그를 찾기위한 4가지 선택자. 태그 : "태그명" (a태그 찾기 = "a") 클래스 : #클래스명 (a클래스 찾기 = "#a") id : .id (id가 a인 태그 찾기 = ".a") 자식 : 부모선택자 > 자식선택자 (id가 a인 태그의 자식 중 div 태그 ..
JWT 정의 - JSON Web Token ) - JSON 데이터를, URL-safe BASE64 인코딩과( URL로 사용될 수 있는 문자열로 구성 ), 특정 암호화 알고리즘으로 전자 서명된 문자열. - 정보전달 및 권한인가를 위해 사용하는 토큰. JWT 구성 - 3가지 파트로 나누어져 있으며 ( header, payload, signature ), 마침표(.)를 구분점으로 이어져 있음 1. header 토큰의 타입과, signature에서 사용하는 암호화 알고리즘 두 데이터를 JSON으로 만들고, URL-safe BASE64 인코딩하면 완성 header에 필요한 데이터 = { "alg": "HS256", "typ": "JWT" } => 인코딩 => eyJhbGciOiJIUzI1NiIsInR5cCI6Ik..