Thread, Sync, Async 의 동작 방식
·
python
지금까지 다양한 자동화 도구를 만들어 왔는데, 이때에 거의 Sync 방식으로 작성해두었다. 그러다가 동작이 완료되는 데까지 시간이 너무 오래걸리게 되어 병렬적으로 Thread 방식으로 개선도 진행해보고리소스 사용량이 너무 많아 크래시가 발생하길래 Async방식도 시도해봤는데, 이 과정에서이 세가지 방식의 차이점이 무엇인지, 그리고 어떤 장단점이 있는지, 사용방법은 어떤지 정리하고자 한다. 먼저 제목에도 있다시피 Sync, Async, Thread 세 가지는 함수를 어떻게 기다리고, 어떻게 이어서 실행하느냐즉, 작업을 언제 멈추고 언제 재개하며 언제 동시에 동작시킬 지에 대한 규칙의 차이가 있다. 1. Sync (동기)Sync방식은 하나의 작업이 끝나야 다음 작업을 진행하는 방식으로 기다리는 동안 아무것도..
python + selenium, bs4 환경 세팅하기
·
python/python_selenium
1. python 다운로드https://www.python.org/downloads/ 2.python 을 path 에 추가하기 선택 후 install Now3. visual studio code 다운로드 (다음버튼 계속누르면 됨) Visual Studio Code - Code Editing. RedefinedVisual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications.  Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.code.vi..
selenium_quiz2
·
python/python_selenium
- 웹스크래핑을 이용하여 나만의 비서를 만들기 - 네이버에서 오늘 서울의 날씨 정보를 가져옴. 다음 뉴스 홈에서 뉴스 3건을 가져옴 (헤드라인이 현재 사라짐) it뉴스 3건을 가져옴. 해커스 어학원 홈페이지에서 오늘의 회화 지문을 가져옴. # 웹스크래핑을 이용하여 나만의 비서를 만들기 # 1. 네이버에서 오늘 서울의 날씨 정보를 가져옴. # 2. 다음 뉴스 홈에서 뉴스 3건을 가져옴 (헤드라인이 현재 사라짐) # 3. it뉴스 3건을 가져온다. # 4. 해커스 어학원 홈페이지에서 오늘의 회화 지문을 가져온다. from bs4 import BeautifulSoup import requests import random import re def create_soup(url): print("="*50) head..
selenium_quiz1
·
python/python_selenium
목적 : 네이버 부동산에서 송파 헬리오시티 검색 후 목록 추출하기 # 네이버 부동산에서 `송파 헬리오시티` 검색 후 목록 추출하기 from bs4 import BeautifulSoup import time from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys browser = webdriver.Chrome() url = "" browser.get(url) time.sleep(1) # 송파 헬리오시티로 이동 후 목록이 로딩될동안 대기. items = browser.find_element(By.ID, "search_input") items.se..
Headless 크롬
·
python/python_selenium
from bs4 import BeautifulSoup import time from selenium import webdriver options = webdriver.ChromeOptions() # headless 즉, 창을 띄우지않고 랜더링을 통해 크롤링 가능 # 다만 해당의 경우, user-agent가 headless로 인식되어 몇몇 사이트에서 막을 수 있다. options.headless = True options.add_argument("window-size=1920x1080") # 아래와 같이 user-agent를 나와 같은 상태로 만들 수 있음. options.add_argument("user-agent = Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleW..
Selenium 활용2
·
python/python_selenium
import requests from bs4 import BeautifulSoup header = {'User-Agent':("Mozilla/5.0 (Windows NT 10.0; Win64; x64) " "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36") ,"Accept-Language":"ko-KR,ko"} # 한글 언어 웹페이지를 불러옴 url = "" res = requests.get(url, headers=header) res.raise_for_status() soup = BeautifulSoup(res.text, "lxml") # with open("movie.html", "w", encoding="utf8") as..
Selenium 활용1
·
python/python_selenium
목표 : 네이버 항공에서 제주도행 항공권 찾기 from selenium import webdriver from selenium.webdriver.common.by import By # webdriverWait을 사용하기 위한 import from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import time def wait_until(xpath_str): # 아래값이 나올때까지 기다림 ( 다만 나오지 않는 경우 최대 3초까지 기다림. ) WebDriverWait(browser, 3).until(EC.presence_of_element_loc..
Selenium 심화
·
python/python_selenium
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys # webdriverWait을 사용하기 위한 import from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import time browser = webdriver.Chrome() browser.get("") # 로그인 버튼을 클릭 후 이동 elem = browser.find_element(By.CLASS_NAME,"link..