파이썬/크롤링
requests vs aiohttp - HTTP 요청의 모든 것
소개Python에서 HTTP 요청을 처리할 때 가장 많이 사용되는 두 라이브러리인 requests와 aiohttp의 매개변수와 사용법을 자세히 비교해보겠습니다.설치 방법# requests 설치pip install requests# aiohttp 설치pip install aiohttprequests 라이브러리의 주요 매개변수GET 요청import requestsresponse = requests.get( url="https://api.example.com/data", params={'key': 'value'}, # URL 쿼리 파라미터 headers={'Authorization': 'Bearer token'}, # 요청 헤더 cookies={'session':..
VPN과 프록시 서버
소개인터넷을 사용하다 보면 VPN과 프록시 서버라는 용어를 자주 접하게 됩니다. 이 둘은 비슷해 보이지만 작동 방식과 용도에 중요한 차이가 있습니다. 이번 글에서는 VPN과 프록시 서버의 차이점을 이해하고, Python의 aiohttp를 사용한 구현 방법까지 자세히 알아보겠습니다.VPN(Virtual Private Network)의 이해VPN은 공용 네트워크를 통해 사설 네트워크처럼 안전한 연결을 만드는 기술입니다. VPN의 주요 특징 전체 네트워크 트래픽을 암호화운영체제 수준에서 작동IP 주소 완전 변경모든 애플리케이션에 적용프록시 서버의 이해프록시 서버는 클라이언트와 목적지 서버 사이에서 중계 역할을 하는 서버입니다.프록시 서버의 종류Forward Proxy (포워드 프록시) 클라이언트 -> 프록시 ..
Requests : HTTP 요청 최적화
Python의 requests 모듈은 HTTP 요청을 보내고 응답을 처리하는 데 사용되는 강력하면서도 간편한 도구입니다. 그러나 대규모 또는 빈번한 요청을 다루는 경우, 코드의 효율성을 고려하여 최적화할 필요가 있습니다. 이 블로그 글에서는 requests 모듈을 사용하여 HTTP 요청을 최적화하는 다양한 방법을 살펴보겠습니다. 1. 세션 유지 requests의 Session 객체를 사용하면 연속적인 요청 간에 상태를 유지할 수 있습니다. 이를 통해 동일한 서버에 여러 요청을 보낼 때 발생하는 연결 설정 오버헤드를 줄일 수 있습니다. import requests session = requests.Session() # 여러 요청에서 동일한 세션 사용 response1 = session.get('https:..
크롤링이 가능한 사이트인지 확인하는 방법
웹 사이트를 크롤링하기 전에 해당 사이트에서 크롤링을 허용하는지 확인하는 것이 중요합니다. 웹 사이트에서 크롤링을 허용하지 않는 경우, 크롤링을 시도하면 차단되거나 페이지가 제대로 표시되지 않을 수 있습니다. 웹 사이트에서 크롤링을 허용하는지 확인하는 방법은 다음과 같습니다. robots.txt 파일 확인 웹 사이트의 robots.txt 파일을 확인하면 크롤러가 어떤 페이지를 크롤링할 수 있는지 확인할 수 있습니다. robots.txt 파일은 웹 사이트의 최상위 디렉터리에 위치하며, 다음과 같은 형식으로 작성됩니다. User-agent: * Disallow: / Allow: /index.html 위의 예시에서 User-agent: *는 모든 크롤러에 해당하는 것을 의미합니다. Disallow: /는 모든..
크롤링을 할 때 셀레니움이 필요한지 확인하는 방법
크롤링을 할 때 셀레니움이 필요한지 확인하는 방법은 크게 두 가지가 있습니다. 자바스크립트 사용 중지 웹 브라우저의 개발자 도구에서 자바스크립트를 사용 중지하고 페이지를 확인하는 방법입니다. 자바스크립트가 사용 중지되면 웹 페이지의 동적인 요소가 모두 숨겨지고, 정적 요소만 표시됩니다. 따라서, 페이지의 내용을 정적 요소만으로 추출할 수 있다면 셀레니움이 필요하지 않습니다. 개발자 도구에서 자바스크립트 사용 중지 방법 크롬 브라우저의 경우 다음과 같은 방법으로 개발자 도구에서 자바스크립트 사용을 중지할 수 있습니다. 크롬 브라우저에서 페이지를 열고, F12 키를 누릅니다. 개발자 도구가 열리면, 환경설정을 선택합니다. 디버거 항목의 자바스크립트 사용 중지(Disable JavaScript) 체크박스를..
Selenium 4.1.0에서 headless 설정 변경
headless 모드 처리 방식이 변경될 예정입니다. 다가오는 Selenium 4.8.0 릴리스에서는 headless 모드를 설정하는 편의 메서드가 폐지됩니다. 대신 사용자는 브라우저 옵션을 구성할 때 인수를 통해 이를 정의해야 합니다. 변경 이유Chrome과 같은 크로미움 기반 브라우저에서 이제 두 가지 다른 headless 모드를 제공합니다. Selenium의 기존 편의 메서드는 크로미움에서 제공하는 초기 headless 모드를 사용합니다. 이 메서드의 폐지로 시작하여 Selenium 4.8.0에서 이를 사용하지 않게 되며 4.10.0 버전에서는 완전히 제거됩니다. 이로써 사용자는 두 headless 모드 중에서 선택할 수 있게 됩니다. 두 가지 headless 모드 전통적인 headless 모드 ..
셀레니움 최적화를 위한 chrome_options
셀레니움은 웹 페이지를 자동화하는 데 사용되는 프레임워크입니다. 셀레니움을 사용하여 웹 페이지를 크롤링하거나 테스트할 때는 성능 최적화가 중요합니다. 성능을 최적화하면 셀레니움 작업을 더 빠르게 수행할 수 있습니다. 셀레니움의 성능을 최적화하는 방법 중 하나는 chrome_options를 사용하는 것입니다. chrome_options는 Chrome 브라우저를 특정 방식으로 구성하는 데 사용할 수 있는 옵션입니다. 셀레니움에서 자주 사용되는 chrome_options는 다음과 같습니다. --headless: 브라우저를 GUI 없이 실행합니다. 이를 통해 브라우저 창이 표시되지 않아 리소스를 절약할 수 있습니다. --disable-gpu: GPU 가속을 비활성화합니다. 일부 시스템에서 GPU 가속이 문제를 ..
셀레니움에서 이미지 비활성화 : 최적화
셀레니움을 사용하여 웹 페이지를 크롤링하거나 테스트할 때, 이미지는 페이지 로딩에 큰 영향을 미칠 수 있습니다. 이미지를 비활성화하면 페이지 로딩 시간을 크게 단축할 수 있습니다. 셀레니움에서 이미지를 비활성화하는 방법 중 하나는 Chrome 브라우저 옵션을 사용하는 것입니다. 다음과 같이 사용할 수 있습니다. from selenium import webdriver from selenium.webdriver.chrome.options import Options # Chrome 브라우저의 옵션을 설정 chrome_options = Options() prefs = {"profile.managed_default_content_settings.images": 2} # 이미지를 비활성화하는 옵션 chrome_op..