목록개발/python (9)
파파비의 블로그
보호되어 있는 글입니다.
보호되어 있는 글입니다.
api를 활용하여 웹 서비스를 진행하는 경우 크롤링을 했을 때 해당 데이터가 html에 적용되어 오지 않는다. html에 api를 통해 정보를 가져온 후 동적으로 적용하기 때문이다. 개발자도구 -> network에 가면 해당 페이지가 요청하는 api들을 확인할 수 있다. (참고 : api url에 get 요청을 보내면 json형태의 data를 받게 된다) 따라서, 크롤링을 할 때 웹페이지가 api를 통해 정보를 가져온 후 dynamic하게 된 형태라면 해당 api url을 찾아 직접 서버에 get request를 보내고, 거기서 json 형태의 data를 받아 가공하면 된다. 다만, api 들은 크롤러를 통한 기계적인 접근을 막는 경우가 많아 requests.get에 header 설정을 해주어 정보를 얻..
일단 필요한 개념부터 정리하면 Query 웹서버에 get 요청을 보낼 때, 조건에 맞는 정보를 위한 변수 자세한 내용은 https://velog.io/@pear/Query-String-%EC%BF%BC%EB%A6%AC%EC%8A%A4%ED%8A%B8%EB%A7%81%EC%9D%B4%EB%9E%80 Query String 쿼리스트링이란? 사용자가 입력 데이터를 전달하는 방법중의 하나로, url 주소에 미리 협의된 데이터를 파라미터를 통해 넘기는 것을 말한다.http://host:port/path?querystringquery parameters( 물음표 뒤에 = 로 연결된 key valu velog.io 여기가 설명이 잘 되어 있다 requests에 get request를 보낼 때, params 매개변수로..
크롤링? > 웹 페이지에서 필요한 정보를 추출해내는 작업 - 웹 페이지? > HTML 문서임 - HTML을 가져오기 위해 Request lib 사용 - 가져온 HTML 분석을 위해 BeautifulSoup lib를 사용 > 크롤링을 하는 프로그램을 '크롤러'라고 부름 BeautifulSoup 라이브러리 - HTML, XML, JSON 등 파일의 구문을 분석하는 모듈 - 특히 크롤링에서는 가져온 HTML 파일을 분석하기 위해 쓰임 1) 파일 열기 soup = BeautifulSoup(open("index.html"), "html.parse") - 관례적으로 soup라는 객체를 사용함 - index.html 파일을 열고, 그것을 html로 분석하라는 의미 - "html.parser"를 굳이 명시 안하면 자동..
1) 매개변수가 많을 때, 이름 지정해주기 파이썬 메소드/함수에서 매개변수가 많으면 순서를 다 기억해야할까? dart는 이름을 지정할 수 있도록 사전에 조취를 취하면 매개변수=값, 이런식으로 표현이 가능해지는데, 파이썬은 그것이 자동으로 구현되어 따로 조치를 할 필요가 없다. def func(name, age): ... func(age=15, name="AA") func("aa",15) #둘 다 된다. #매개변수명을 지정하면, 순서도 상관없다 2) 초기 값 설정해두기 맨 처음에 값이 입력이 안되면 초기값을 부여하도록 할 수 있음 def foo(name, age=14): print(name) # age에 값에 부여가 안되면 자동으로 14가 된다.
파이썬에서 int는 임의 정밀도 (Arbitrary - Precision)라는 개념을 활용한다. 그렇기 때문에 아무리 큰 정수값이 와도 int에 담을 수 있다. 어떻게 메모리를 처리하길래 사이즈에 상관이 없을까? > 임의 정밀도 정수형은 자릿수를 별로 쪼개서 저장한다. > 123456 > 12 / 34 / 56 이렇게 저장하고 계산할 때 다시 합침 > 따라서 숫자가 커질수록 계산이 느려질 수 있음, 그러나 매우 편리함 참고로 자바에서도 BigInteger라는 별도의 자료형이 존재하고 이는 임의 정밀도 연산을 활용함.
> enumerate()는 매개변수에 sequence가 있는 자료형 (list, string, tuple 등)을 인덱스를 포함하여 enumerate 객체로 return한다. a = [1,2,3,4,5] list(enumerate(a)) > [(0,1), (1,2), (2,3), (3,4), (4,5)] #앞이 인덱스, 뒤가 값 # a = ['a1', 'b2', 'c3'] 의 리스트를 값과 인덱스 함께 출력하라 #1) for i in range(len(a)): print(i, a[i]); #2) for i,v in enumerate(a): print(i, v);