[카테고리:] Dev


  • User-Agent 확인시 유용한 사이트

    파이썬 스크립트를 작성하다 보면 내가 보낸 Request의 User-Agent를 확인해야 하는 경우가 있다. 이때 유용하게 활용할 수 있을것으로 보인다. import httpx response = httpx.get("https://httpbin.org/user-agent") print(response.json())

  • 크롤링시 팝업창 제어 관련

    크롤링을 하다보면 팝업창을 제어해야 하는 경우가 많다. 이러한 팝업창의 ‘확인’ 버튼을 눌러주지 않으면 더이상 진행이 되지 않아 크롤링에 문제가 생긴다. 1. 일반적인 팝업창 일반적인 팝업창은 아래 예시 코드와 같이 팝업창 발생시 핸들러가 동작해 제어토록 한다. with sync_playwright() as playwright: browser = playwright.chromium.launch() page = context.new_page() # dialog 이벤트 핸들러 등록 def on_dialog(dialog): print(f'[+] 팝업 내용 […]

  • 라즈베리파이에서 Selenium 사용시 발생하는 에러 대처

    한동안 크롤링 스크립트를 잘 운영하다 어느날부터 아래와 같은 에러가 발생. File "/home/pi/apti/lib/driver_open_close.py", line 23, in open_Driver driver = webdriver.Chrome(service=service, options=options) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/pi/.venv/lib/python3.11/site-packages/selenium/webdriver/chrome/webdriver.py", line 45, in __init__ super().__init__( File "/home/pi/.venv/lib/python3.11/site-packages/selenium/webdriver/chromium/webdriver.py", line 66, in __init__ super().__init__(command_executor=executor, options=options) File "/home/pi/.venv/lib/python3.11/site-packages/selenium/webdriver/remote/webdriver.py", line 250, in __init__ self.start_session(capabilities) File "/home/pi/.venv/lib/python3.11/site-packages/selenium/webdriver/remote/webdriver.py", line 342, in start_session response = self.execute(Command.NEW_SESSION, caps)["value"] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File […]

  • Selenium <-> Requests간 쿠키 사용하기

    웹 크롤링 시 Selenium과 requests에서 상호 쿠키를 사용할 필요가 있다. 아래 코드로 셀레니움으로 로그인 및 쿠키를 저장하고 활용해보자. from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options from webdriver_manager.chrome import ChromeDriverManager import requests import time import pickle def open_Driver(): options = Options() options.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) […]

  • 라즈베리파이에서 크롤링을 위한 셀레니움(Selenium) 설정

    1. 크롬드라이버 설치 pi@raspberrypi:~ $ sudo apt-get install chromium-chromedriver 2. 가상환경 생성 pi@raspberrypi:~ $ python -m venv .venv pi@raspberrypi:~ $ source .venv/bin/activate 3. 셀레니움, BeautifulSoup4 설치 (.venv) pi@raspberrypi:~ $ pip install –upgrade pip (.venv) pi@raspberrypi:~ $ pip install selenium (.venv) pi@raspberrypi:~ $ pip install bs4 이제 아래 코드를 실행해서 ‘Google’ 이라고 나오는지 확인한다. from selenium […]

  • Amazon Lightsail로 이전

    블로그를 Cafe24 웹호스팅에서 Amazon lightsail로 이전했습니다. 이전하며 아래 부분이 놀라웠고 공부하는셈 치고 좀 더 써봐야겠습니다. 1. 클릭 몇번으로 워드프레스 설치가 그냥 되는구나? 2. 月 $3.5면 커피 한잔 값인데? (月 $5 짜리로 해야 워드프레스가 무리 없이 돌아가더라…) 3. 간단한 명령어로 SSL 설정(Let’s Encrypt), 게다가 주기적으로 인증서 갱신까지 자동으로?

  • python 쓰레드를 uWSGI로 서비스시 문제점

    최근 python thread로 타이머를 구현, 이를 uWSGI로 서비스 하는 과정에서 thread가 동작하지 않아 관련 내용을 정리함. 예제코드는 아래와 같음. import time import threading from flask import Flask i = 0 def thread_run(): global i while True: i += 1 time.sleep(3) app = Flask(__name__) th = threading.Thread(target=thread_run) th.start() @app.route('/') def index(): return str(i) if __name__ == […]

  • Flask 서비스를 위한 uWSGI + Nginx 설정

    1. 필요 패키지 설치 $ sudo apt-get install python3 python3-pip nginx $ sudo pip3 install virtualenv $ sudo pip3 install uwsgi 2. Virtualenv 설정 $ virtualenv .server $ source .server/bin/activate (.server) $ pip3 install flask (.server) $ pip3 install uwsgi uwsgi를 또 설치한 이유는 코드에서 uWSGI decorators를 사용하기 위함임 3. Flask 코드 작성 # server.py […]

  • ROBOCOPY 사용법

    기본 사용법 robocopy 원본 대상 옵션 미러링 카피(/MIR) 하위 디렉토리까지 복사, 원본에 없는 파일이나 디렉토리를 자동 삭제. robocopy E:\사진모음 F:\사진모음 /MIR /LOG+:Backup_%date%.log 옵션 설명 ——————————————————————————- ROBOCOPY :: Windows용 견고한 파일 복사 ——————————————————————————- 시작됨: 2020년 2월 23일 일요일 오후 1:19:16 사용법 :: ROBOCOPY 원본 대상 [파일 [파일]…] [옵션] 원본 :: 원본 디렉터리(드라이브:\경로 또는 \\서버\공유\경로) 대상 :: […]

  • Eclipse with PyDev

    최근 Python 스크립트를 작성하는데 여러 함수와 클레스가 사용되는 스크립트라 Eclipse의 PyDev 플러그인을 이용하여 작성해 보았다. 나름 쓸만하였고 테마까지 셋팅해주니 앞으로 이것만 계속 쓸거 같은 느낌? 셋팅 과정에서 에러가 발생하는 부분이 있어 다음에 설치 시 삽질을 줄이고자 기록해 둔다. 1) 우선 이클립스를 다운로드 하자. Eclipse : http://www.eclipse.org 어떤 패키지도 상관없으나 난 PyDev만 사용할것이므로 용량이 제일 적은 […]