전체 글 357

Selenium 설치 및 사용법

Selenium python을 사용해 웹 브라우저 조작을 자동화 할 수 있는 프레임워크 크롬 (구글), 파이어폭스, 사파리, 엣지( MS) 등이 가능 셀레니움은 실제 사람과 비슷하게 동작하여 많은 정보들을 수집 가능 Selenium 설치 pip install selenium Web Driver 설치 웹 브라우저를 제어할 수 있는 자동화 프레임 워크 pip install Webdriver-manager Selenium 시작 # webdriver 모듈 불러오기 from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManage..

HTML Parser, BeautifulSoup

HTML Parser, BeautifulSoup 웹 스크랩핑을 할 때, 원하는 요소만 가져올 수 있게 해주는 패키지 BeautifulSoup을 사용하기 위한 라이브러리 불러오기 # 라이브러리 불러오기 import requests from bs4 import BeautifulSoup BeautifulSoup 객체 생성 # 객체 생성하기 res = requests.get("원하는 사이트의 URL") soup = BeautifulSoup(res.text, "html.parser") 태그에 해당하는 요소 찾아보기 # 태그 요소 찾기 Ex_h3 = soup.find("h3") # 태그 요소 모두 찾기 all_h3 = soup.find_all("h3") # 그 중 첫번째 요소 all_h3[0] id 하나의 고유 태..

웹 스크래핑과 웹 크롤링

웹 스크래핑 특정한 목적으로 특정 웹 페이지에서 데이터를 추출하는 것 -> 데이터 추출 Ex_) 날씨 데이터 가져오기, 주식 데이터 가져오기 웹 크롤링 URL을 타고 다니며 반복적으로 데이터를 가져오는 과정 -> 데이터 색인 (indexing) Ex_) 검색 엔진의 웹 크롤러 로봇 배제 프로토콜 (REP) 로봇이 모든 사이트에 대해 모든 정보를 취득하는 것을 막기 위함 1994년, REP (Robot Exclusion Protocol) 탄생 설정을 통해 접근 권한 # 모든 user-agent에 대해서 접근 거부 User-agent: * Disallow: / # 모든 user-agent에 대해서 접근 허가 User-agent: * allow: / # 특정 user-agent에 대해서 접근 불허 User-a..

HTML (Hypertext Markup Language)

HTML (Hypertext Markup Language) 웹 브라우저가 이해할 수 있는 "언어" # 문서 버전 # HTML 문서 시작 선언 및 기본 언어 설정 # 실제 사용자가 눈으로 볼 수 있는 문서의 내용이 입력되는 곳 안녕하세요~ # 주석처리 Body - 실제로 사용가자 눈으로 보는 내용 입력 block - 레고처럼 차곡차곡 쌓이고 화면 너비가 꽉 차는 요소 블록의 크기를 조정 가능하고, 페이지의 구조적 요소를 나타냄 인라인 요소를 포함할 수 있으나, 인라인 요소에 포함될 수 없음 , , 등이 있음 inline - 블록 요소 내에 포함되는 요소 문장, 단어 같은 작은 부분에 사용, 한 줄에 나열 좌/우에 여백을 넣는 것만 허용 , , 등이 있음 inline-block - 글자처럼 취급되나, blo..

DFS/BFS (Depth-First Search / Breadth-Frist Search)

DFS (Depth - First Search) 깊이 우선 탐색으로, 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘 스택 (Stack) 을 사용하여 표현 동작과정 탐색 시작 노드를 스택에 push하고 방문 처리 스택의 최상단 노드에 방문하지 않은 인접 노드가 있다면 그 인접 노드를 스택에 넣고 방문 처리 - 방문하지 않은 인접 노드가 없으면 스택에서 최상단 노드를 꺼냄 위의 과정을 더 이상 수행할 수 없을 때까지 반복 코드 구현 graph = { 1: [2, 5, 9], 2: [3], 3: [4], 4: [], 5: [6, 8], 6: [7], 7: [], 8: [], 9: [10], 10: [] } def recursive_dfs(v, visited = []): visited.append(v) #..

728x90