- 공인 IP주소가 출력된다.
request 패키지
- r = requests.get('https://api.github.com/user', auth=('user', 'pass')) : url주소로 들어가서 크롤링해온다.
- r.status_code : 200, 읽어온 r의 상태 코드를 출력 (200 : 정상, 404 : URL주소 찾을 수 없음 등)
- r.headers['content-type'] : r.의 content-type의 헤더를 읽어옴 'application/json; charset=utf8'
- r.encoding : r의 인코딩 방식 확인, 'utf-8'
- r.text : r이 가지고있는 text 확인'{"type":"User"...'
- r.json() : r의 Json 확인 {'private_gists': 419, 'total_private_repos': 77, ...}
Transmission Control Protocol (TCP)
- 세방향 HandShaking (Three-way Handshaking)
- 클라이언트에서 보낼 떄, 데이터 통신 전, 서버 -> 클라이언트, 클라이언트 -> 서버, 서버 -> 클라이언트 이렇게 3번 통신을 통해 송수신 확인을 한다.
- 이를 이용한 공격이 DoS(Denial of Service)공격이다.
UDP (No HandShaking)
- 통신하며 잘 받았는지 확인하지 않음
Internet Protocol(IP)
__init__.py
가 존재하는 폴더를 만들어서 기능들을 만들어 넣으면 된다.
- 아래 Lib-> site-package -> Request에서 보면
__init__.py
를 찾을 수 있다.
- 또, 모듈이 아니라 패키지지만,
__init__.py
에서 from .api import request, get, head, post, patch, put등 현재폴더에서 app (.api)에서 모듈들을 임포드해서 사용하기 때문에, 패키지를 모듈처럼 사용할 수 있다.
abc1234@example.com
^
: ^
로 시작해야한다.^n$
+
기호, -
기호, _
과 .
을 포함한 문자열만 포함한다.+@
+
는 왼쪽문자열이 반드시 하나이상 나와야한다.@
는 왼쪽문자열이 반드시 하나이상 존재하고 그 옆에 @
가 와야한다.\.
: 이 자리에 반드시 실제 .
이 와야한다.+$
: +앞에 문자열이 하나이상 존재해야하고, 거기서 끝이다.'\d{3}-\d{3,4}-\d{4}'
{3}
: 3자리 숫자가 있어야 한다.{3,4}
: 3~4자리 숫자가 있어야한다.-
: 이곳에 -
가 있어야한다.
Anaconda.org
에서 GTTS를 검색해서 설치 방법을 확인한다.
from gtts import gTTS
text = "안녕하세요"
tts = gTTS(text=text, lang='ko')
tts.save('hello.mp3')
- 위 코드 실행 후, 음성파일이 생겼다.
- AWS 에서 Amazon Polly 서비스가 있다.
파이썬에서 파일다루기
file = 'hello.txt' f = open(file, 'w') f.write('GoodMorning') f.write('GoodEvening') f.close()
- 위 코드로 파일을 열고, text를 입력하고, 다시 닫아 줄 수 있다.
w
: write 쓰기모드
- conda install -n base -c conda-forge qrcode pillow
- forty 환경에 에러가 있어, base에 설치했다.
import qrcode
qr_data = 'www.naver.com'
qr_img = qrcode.make(qr_data)
save_path = qr_data[4:-4] + '.png'
qr_img.save(save_path)
- 텍스트의 왼쪽, 오른쪽의 공백을 제거해준다.
- 공백뿐만 아니라, 문자도 제거할 수 있다. (! or * )를 제거한다.`
- 문자열을 쪼개준다.
- 인자(문자열)를 주지 않으면 띄어쓰기로 구분해서 쪼개준다.
- join으로 다시 붙힐 수 있다.
- 기계에 실제로 이용 가능한 기억 자원을 이상적으로 추상화하여 사용자들에게 매우 큰 메모리로 보이게 만드는 것이다.
- 하드디스크를 이용하여 메모리처럼 사용하는 것이다.
- 컴퓨터의 정보를 확인할 수 있도록 도와주는 모듈이다.
- itertools.count(num) : num을 포함하여 num부터 무한대까지 값을 출력한다.
- itertools.cycle : 범위를 반복한다.
- accumulate([1, 2, 3, 4, 5]) : --> 1, 3, 6, 10, 15 누적합을 제공한다.
- chain 은 리스트를 연결(chain)해준다.
- product : 중복해서 k길이의 조합을 만들어준다.
- permutations : 중복을 제외한 k길이의 조합을 만들어준다.
- combinations : 순서에 상관없는 중복을 제와한 조합을 만들어준다.
- HTML(Hyper Text Markup Language)와 XML(eXtreame HTTP)파일로부터 데이터를 뽑아내기 위한 파이썬 라이브러리이다.
HTML
- HTML은 초기에는 긴 헤더가 필요했지만, HTML5에서 로 짧아졌다.
- 여러가지 태그들이 계층적(Hierachical) 구조를 가지고 있다.
- bs4에서 BeautifulSoup를 import해준다.
soup.prettify()는 태그별로 사람이 보기 좋게 출력해준다.
- soup.find 함수를 이용하여, 태그별, 클래스별, id별로 찾을 수 있다.
import requests
from bs4 import BeautifulSoup
def get_exchange_rate(target1, target2):
headers = {
'User-Agent' : 'Mozilla/5.0',
'Content-Type' : 'text/html; charset-utf-8'
} # html의 헤더
response = requests.get("https://kr.investing.com/currencies/{}-{}".format(target1, target2), headers=headers) #인베스팅 웹 사이트에서 target1, 2 의 정보의 페이지에 들어가 크롤링 한다 header는 미리 정의한 헤더를 사용한다.
content = BeautifulSoup(response.content, 'html.parser') # 크롤링해온 데이터를 html형식으로 번역(parser)한다.
container = content.find('span', {'data-test' : 'instrument-price-last'}) # 번역(parser)한 데이터에서 span태그의 data-test=innstrument-price-last 정보를가진 아이템을 찾는다.
print(container.text) #운좋게도 유니크한 정보라 바로 출력해보면 환율이 나온다.
- 쓰레드는 일꾼이다. 하나의 프로세스가 두개의 쓰레드를 사용하면 하나의 작업에 일꾼이 두명인 것이다.
- 메인쓰레드와 서브 스레드가 각자 동작을 출력한다.
- 최신 버전은 4.0.0 이다.
- pip install googletrans==4.0.0-rc1
- AWS에서 Amazon Translator 서비스와 비슷하다.
- 현재 마우스의 위치를 출력한다.
import pyautogui
import time
import pyperclip
pyautogui.moveTo(1383, 268, 0.2) #마우스를 0.2초후에 1383, 268로 옮긴다.
pyautogui.click() # 클릭하기
time.sleep(0.5) # 0.5초 대기
pyperclip.copy("서울날씨") #서울날씨 텍스트를 복사
pyautogui.hotkey("ctrl", "v") # hotkey 동시에 눌러주는 키
time.sleep(0.5) #0.5초 대기
pyautogui.write(["enter"]) #엔터 입력
time.sleep(1)
- 데이터 분석에 바로 적용
- 테이블성 데이터 : 테이블, CSV, TSV, Spreadsheet
- json
- XML
- HTML의 구조처럼 데이터를 담는다. 태그에 키를 담고 괄호 안에 값을 담는다. HTML을 Json처럼 사용한다 생각 할 수 있겠다.
- yaml
- sns, 기사, 소설, 댓글....
- 음성데이터, 사진, 동영상...
- 각 리스트들을 행으로 3개의 열을 가진 데이터 테이블을 생성하였다.
- len(df)하면 row(행)의 개수가 출력된다.
- 컬럼, 속성명 변경
- 컬럼별 검색
- 똑같은 df.iloc이지만 리스트로 감싸면 시리즈가 아니라 DataFrame으로 나온다.
- 또, 엑셀, CSV파일등으로 저장이 가능하다.