[Python] 웹 스크래핑 라이브러리 - beautifulsoup
·
프로그래밍/Python
지난 포스팅에서는 웹 스크래핑과 웹 크롤링 두 가지 개념에 대해서 간략하게 알아봤었다. 오늘은 웹 스크래핑에 사용되는 Python 라이브러리 중 하나인 BeautifulSoup에 대해서 알아보자. BeautifulSoup  BeautifulSoup 란?위에서 말했듯이, BeautifulSoup는 웹 스크래핑을 위한 파이썬 라이브러리이며, 주로 HTML 및 XML 문서에서 데이터를 추출하고 구문을 분석하는 데 사용된다. 일반적으로 requests 메서드를 통해 가져온 값을 HTML로 파싱 후, 변환된 값에 beautifulSoup를 적용하며 사용한다.사용법beautifulSoup의 기본적인 사용법은 다음과 같다. 우선 라이브러리를 import한 후 객체를 생성해 메서드들을 사용하기만 하면 되기때문에 간단히..
[웹 기초] 웹 스크래핑 VS 웹 크롤링
·
프로그래밍/WEB
웹 상에서의 데이터 추출은 웹 페이지의 HTML 구조를 파싱하고 원하는 정보를 추출하는 과정을 뜻한다. 이러한 과정을 진행할 때 가장 대표적으로 쓰이는 방법으로는 웹 스크래핑과 웹 크롤링이 있다. 오늘은 이 두가지 방법과 데이터 추출시의 규제를 정해놓은 파일인 robots.txt에 대해서 알아보자.웹 스크래핑  웹 스크래핑은 웹 페이지에서 원하는 정보를 추출하고 수집하는 프로세스를 의미한다. 주로 정적인 웹 페이지에서 데이터를 수집하며, 데이터를 추출하고 가공하여 필요한 형태로 변환한다. 이 때 Beautiful Soup와 Requests와 같은 라이브러리를 주로 사용한다. 일반적으로는 소규모의 데이터 수집시에 활용되는 방법이다.웹 스크래핑 라이브러리들은 아래에 보다 자세히 정리되어있다.https://s..
[웹 기초] HTTP 와 HTTPS
·
프로그래밍/WEB
HTTP(HyperText Transfer Protocol)HTTP 란?HTTP는 텍스트 기반의 통신 규약으로 인터넷에서 데이터를 주고받는데 사용되는 프로토콜이다. 클라이언트와 서버 간의 통신을 위한 표준 프로토콜로, 주로 웹 브라우저와 웹 서버 간에  문서나 데이터를 전송하는 데 주로 사용된다. 해당 프로토콜은 클라이언트가 브라우저를 통해 어떠한 서비스를 URL이나 다른 수단을 통해 요청(request)하면 서버가 해당 요청 사항에 맞는 결과를 응답(reponse)하는 형태로 동작한다.HTTP 특징TCP/IP를 이용하는 응용 프로토콜이다.HTTP는 무상태(stateless) 프로토콜이다. 따라서 같은 클라이언트로 부터 연속적인 요청이 와도 서버는 상태 정보를 유지하지 않고 독립적으로 처리한다.HTTP는..
[웹 기초] HTML 이해하기
·
프로그래밍/WEB
HTML이란?  HTML 기본 문법HTML은 기본적으로 의 구조를 가지며, 콘텐츠를 가지는 태그와 가지지 않는 태그로 구분된다. 콘텐츠를 가지는 태그는 시작 태그와 종료 태그를 가지는 한 쌍으로 존재하는 반면, 콘텐츠를 가지지 않는 태그는 단일 태그만 존재한다. 이때 단일 태그는 셀프 클로징을 통해 코드를 끝내거나, 아예 열린 상태로 두거나 한다. 콘텐츠 html 문법 사용 시 주의해야 할 점은 다음과 같다.대소문자 주의 - 태그는 가능한 소문자로 작성닫는 태그 생략 주의 ID가 중복되지 않게 주의계층 구조 유지동일한 의미의 태그 중첩 주의속성과 값 태그는 기본적으로 기능 확장을 위한 속성과 값을 가진다. --> 아무개 아무개 -->HTML 기본 문서 구조HTML의 기본적인 문서 구조는 다..
코딩 테스트 이해하기
·
CS
코딩 테스트 종류Implementation : 제시된 흐름에 따라 실행하는 코드를 만들도록 요구Algorithm comprehension : 문제의 효과적/효율적 해법을 찾아내도록 요구Competency test : 특정한 자료구조와 알고리즘을 착안하여 제한시간 내에 풀도록 요구etc : 특정한 언어 구문을 활용할 수 있는지를 테스트 (SQL)어떤 대비가 필요할까?구현 능력 갖추기 : 아주 당연한 얘기지만 그만큼 필수적이기도 하다. 적어도 하나의 프로그래밍 언어에 능숙해져야한다.기본적인 자료구조 이해 : Array, Stack/Queue, Hash, Tree, Graph,... 등등 여러 자료구조 익숙해지기기초 알고리즘 및 시간/공간 복잡도에 대한 이해 : 문제를 읽고 어떤 접근방법을 택할지 선정하는것이..
[프로그래머스] 문제풀이 - 더 맵게
·
알고리즘
사용한 풀이법 : heap풀이 과정최소값과 그 다음값을 탐색, 계산 후 다시 삽입 => 해당 연산이 조건을 충족할 때 까지 반복되어야 함. 이를 위한 자료구조가 바로 최소힙!1. heapify 메서드를 통해 scoville 리스트를 최소힙으로 초기화2. 항상 최소값을 뽑아내는 heappop 연산을 통해 min1, min2를 설정    이때, min1이 k이상이거나, 더 이상 뽑아낼 원소가 없을때는 반복문 종료3. 삽입할 원소를 계산 후, 힙에 push4. 연산이 완료 될 때마다 +1한 answer를 리턴 풀이 코드import heapqdef solution(scoville, K): answer = 0 heapq.heapify(scoville) while True: min1 =..
[Python] PEP8 스타일
·
프로그래밍/Python
PEP8 스타일   PEP 8PEP8 : 파이썬 개선 제안서, 파이썬 코드를 어떻게 구상할 지 알려주는 스타일 가이드PEP8 전체 가이드다른 사람과 원활하게 협업하려면 공통된 스타일 공유가 필요일관성 있는 스타일은 나중에 수정하기도 쉽다.whitespace한 줄의 문자 길이가 79자 이하여야 한다.함수와 클래스는 빈 줄 두개로 구분한다.클래스에서 메서드는 빈 줄 하나로 구분한다.변수 할당 앞 뒤에 스페이스를 하나만 사용한다.리스트 인덱스, 함수 홏ㄹ, 키워드 인수 할당에는 스페이스를 사용하지 않는다.naming함수, 변수, 속성 : lowercase_underscore보호(protected) 인스턴스 속성 : _leading_underscore비공개(private) 인스턴스 속성 : __double_le..
[Python] 큐(Queue)
·
프로그래밍/Python
큐   큐자료를 보관할 수 있는 선형 구조로 push(enqueue)와 pop(dequeue)이 반대에서 이루어지기 때문에 선입선출(FIFO)방식을 채택한 자료구조이다.큐는 자료를 생성하는 작업과 그 자료를 이용하는 작업이 비동기적으로 일어날 때 사용된다.또한 자료 생성이 여러 곳에서 발생하거나, 자료 이용이 여러 곳에서 발생할 때 사용된다.스택과 마찬가지로 큐 역시 배열(리스트)과 연결 리스트(이중 연결 리스트)를 이용하여 구현가능하다.연산 종류설명배열 시간 복잡도연결 리스트 시간 복잡도size()현재 큐에 들어 있는 데이터 원소 수 반환O(1)O(1)isEmpty()현재 큐가 비어 있는지 판단O(1)O(1)enqueue()원소 x를 큐에 pushO(1)O(1)dequeue()큐의 맨 앞 원소를 반환 ..
[Python] 리스트
·
프로그래밍/Python
리스트   파이썬에는 다른 언어들에서 다뤄지는 배열과 유사한 성질의 리스트(list)라는 자료구조가 존재한다.  동일한 자료형만 가질 수 있는 배열과는 달리, 리스트는 다양한 자료형을 하나의 리스트 안에 담을 수 있다.선언 방법a = [1,2,'a','b',"xyz"]b = []c = list()d = [0]*10 #[0,0,0,0,0,0,0,0,0,0]e = [i*2 for i in range(5)] #[0,2,4,6,8]리스트는 위와 같은 다양한 방법을 통해 선언이 가능하다.연산 a = [1,2,3]b = ['a','b','c']c = a+b #[1,2,3,'a','b','c']d = a*3 #[1,2,3,1,2,3,1,2,3]e = a*0 #[]이처럼 리스트 사이의 덧셈이 가능하며, 곱셈..
[자료구조] 해시 & 그리디
·
알고리즘
해시(Hash)  해시 개념해시란 해시 테이블에 Key와 Value를 매핑해서 데이터를 저장하는 자료구조이다. 주로 데이터 탐색, 삽입, 집계등의 연산을 할때 유용하며, 인덱스 값이 숫자가 아닌 문자열이나 튜플을 때도 유용하다. 하지만 최댓값과 최솟값을 찾는 문제는 자료구조 전체를 탐색해야 하기 때문에 효율성이 떨어진다는 단점이 있다.해시 (Hash) : 임의 값을 고정 길이로 변환하는 것해시 테이블 (Hash Table) : 키 값의 연산에 의해 직접 접근이 가능한 데이터 구조해싱 함수 (Hashing Function) : Key에 대해 산술 연산을 이용해 데이터 위치를 찾을 수 있는 함수해시 값 (Hash Value) 또는 해시 주소 (Hash Address) : Key를 해싱 함수로 연산해서, 해쉬..
[자료구조] 이진 트리 & 힙
·
알고리즘
트리  트리정점(node)과 간선(edge)을 이용하여 데이터의 배치 형태를 추상화한 자료 구조로, 순환하는 길이 없는 그래프라고 말할 수 있다.루트 노드 (root node) : 트리의 최상단 노드리프 노드 (leaf nodes) : 트리의 최하단 노드 내부 노드 (internal nodes) : 루트와 리프 사이에 위치한 노드부모 (parent) 노드와 자식 (child) 노드 : 정점의 바로 위 노드가 부모 노드, 바로 아래 노드가 자식 노드 (부모의 부모는 조상노드, 자식의 자식은 후손 노드)노드의 수준 (level) :  root로 부터 각각의 노드까지 도달하기 위해 거쳐야하는 간선의 수 (root = level 0)노드의 차수 (degree) : 자식 노드의 수트리의 높이 (height) 또는..
[자료구조] 연결 리스트 & 스택
·
알고리즘
연결 리스트연속된 공간에 데이터를 저장하는 방식인 리스트와는 다르게 연결 리스트(linked list)는 연속적이지 않는 공간에 데이터를 줄줄이 엮어서 저장한다. 연결 리스트는 일반적인 리스트보다 특정 원소의 삽입/ 삭제가 수월하다는 장점이 있지만, 특정 원소를 탐색하는 시간이 길고 요구되는 메모리 공간이 더 크다는 단점이 있다. 따라서 각각의 상황이 요구하는 자료구조를 제대로 파악해서 적절하게 사용하는 능력을 키우는것이 중요하다.연결 리스트의 종류는 단일 연결 리스트, 이중 연결 리스트, 원형 연결 리스트가 있다.단일 연결 리스트 - 각 원소가 자신의 다음 원소 주소를 들고 있는 구조이중 연결 리스트 - 각 원소가 자신의 이전, 다음 원소 주소를 들고 있는 구조                       ..