사용. 웹 페이지, 자동화 도구, 프록시, 웹크롤러 등에서 데이터를 긁어오는데 주로 사용. urllib vs. urllib2 - URL 만 vs. URL, Request urlib2.urlopen(url [, data [, timeout]]) - 요청 보내기 - url : 문자열 url, Request 클래스의 인스턴스 - data : POST 방식 전송시 폼데이터, URL 인코딩된 데이터 - timeout : 초 - 파일객체와 유사한 객체 반환
않으면 전체 readline() 한줄의 텍스트 반환 readlines() 모든줄을 리스트로 반환 close() 연결 닫기 info() URL 과 관련된 메타정보가 있는 객체 반환 getcode() HTTP 응답코드 정수 반환 geturl() 반환 데이터의 실제 URL 반환, redirection 고려 urlopen() 함수 반환객체의 함수들
클래스 이용 > { "foo": [ "bar" ], "q": [ "query string" ] } data 를 추가하면 post 방식으로 자동 변경 urllib2.Request(url[, data][, headers][, origin_req_host][, unverifiable]) data 추가
변경, data 는 URL 인코딩된 데이터 Request.get_method() - http method 반환 Request.has_data() - 데이터가 있는지 확인 Request.get_data() - 요청에 데이터가 있으면 반환 Request.add_header(key, val) - 헤더정보 추가 , key 가 헤더이름, val 가 헤더값 Request.add_unredirected_header(key, header) - redirect 가 있을경우에 추가되지 않을 헤더정보 추가 Request.has_header(header) - 헤더정보가 있는지
타입반환 Request.get_host() - 요청을 보낼 host 반환 Request.get_selector() - URL 에서 selector 부분 반환 Request.get_header(header_name, default=None) - 지정한 헤더에 대한 값 반환 Request.header_items() - 헤더정보 전체 반환 Request.is_unverifiable() - 요청을 검증할수 없는 경우 True 반환
않음. 커스텀 오프너를 만들어야 함. 필요한 handler 를 추가하는 방식으로 생성 여러가지 handler.. urllib2.build_opener([handler, ...]) 클래스 설명 urllib2.HTTPBasicAuthHandler 기본 http 인증 처리 urllib2.HTTPDigestAuthHandler HTTP digest 인증 처리 urllib2.HTTPCookieProcessor HTTP 쿠키처리 urllib2.HTTPHandler url을 HTTP 로 열기 urllib2.HTTPSHandler url을 HTTPS 로 열기 urllib2.HTTPRedirectHandler HTTP 페이지 전환을 처리
reason 속성이 문제에 대한 정보를 가지고 있다. exception urllib2.HTTPError - URLError의 서브 클래스 - HTTP 프로토콜과 관련된 문제 - 인증요구와 같은 이벤트를 알리는데 사용. - HTTP Staus code, reason 속성 exception urllib.ContentTooShortError - 다운로드된 데이터의 양이 예상한것(Content-length) 적은 경우 발생
passwd[, acct[, timeout]]]]]) - FTP 연결을 나타내는 객체 생성 - host 를 연결하면 자동으로 connect() 함수 호출. - user, password, acct 를 지정하면 login() 함수 호출. FTP.connect(host[, port[, timeout]]) FTP.login([user[, passwd[, acct]]]) FTP.close()
새디렉토리 생성 ftp.rename(old, new) - 서버의 파일 이름 변경 ftp.pwd() - 현재 디렉토리 반환 ftp.rmd(dirname) - 해당 디렉토리 삭제 ftp.dir(dirname) - ‘LIST’ 명령 호출, 지정하지 않으면 현재 디렉토리 기준 출력 - dirname 지정하면 지정한곳으로 출력 ftp.size(filename) - 지정한 파일의 사이즈 출력
텍스트로 반환 - callback 은 콜백함수 지정, 지정하지 않으면 stdout ftp.retrbianry(command, callback [, blocksizes [, rest]]) - 서버에서 실행한 결과를 이진 전송 모드로 반환 - command : “RETR ”+filename - callback : 데이터 블록 받을때 마다 호출되는 함수 - rest : 파일 오프셋
혹은 디코딩 메일첨부나 http 프로토콜에서 이진 데이터를 추가하는데 사용 altchars : base64 출력에서 +, \ 을 대체하기 위한 2개의 문자열 지정 YXNoODQ6MTIzNA== ash84:1234 YXNoODQ6MTIzNA== ash84:1234 61736838343A31323334 ash84:1234 MFZWQOBUHIYTEMZU ash84:1234
저장하는 기능 제공 parse, parseString() 으로 파싱 attributes firstchild lastchild nodename nodetype getElementByTagName() hasAttributes() getAttribute() documentElement() appendChild() removeChild() replaceChild()
쿠키 등의 고급 기능 => build_opener 이용, 커스텀 오프너 urlencode 는 호출시 반드시 사용. error 처리를 잘 활용하자. 401, 404, 500 XML 파싱 => 용도와 크기 고려 JSON, dump, load 만 기억 hashlib 에서 update 는 갱신이 아니라 concat