전체 글
requests : 간편한 HTTP 요청
파이썬에서 웹 데이터를 가져오거나 웹 API를 사용할 때, requests 모듈은 필수적인 도구입니다. requests 모듈은 간결하고 우아한 API를 제공하여 다양한 HTTP 요청을 쉽게 수행할 수 있게 해줍니다. requests 모듈의 장점 간결한 API: requests 모듈은 복잡한 코드를 작성하지 않고도 다양한 HTTP 요청을 수행할 수 있습니다. 다양한 기능: GET, POST, PUT, DELETE 등 다양한 HTTP 메서드를 지원하며, 인증, 쿠키, 헤더 등 다양한 기능을 제공합니다. 자동 JSON 파싱: JSON 응답을 자동으로 파싱하여 사용하기 쉽게 해줍니다. 오류 처리: HTTP 오류를 처리하는 데 도움이 되는 기능을 제공합니다. requests 모듈 사용 방법 requests 모듈을..
크롤링이 가능한 사이트인지 확인하는 방법
웹 사이트를 크롤링하기 전에 해당 사이트에서 크롤링을 허용하는지 확인하는 것이 중요합니다. 웹 사이트에서 크롤링을 허용하지 않는 경우, 크롤링을 시도하면 차단되거나 페이지가 제대로 표시되지 않을 수 있습니다. 웹 사이트에서 크롤링을 허용하는지 확인하는 방법은 다음과 같습니다. robots.txt 파일 확인 웹 사이트의 robots.txt 파일을 확인하면 크롤러가 어떤 페이지를 크롤링할 수 있는지 확인할 수 있습니다. robots.txt 파일은 웹 사이트의 최상위 디렉터리에 위치하며, 다음과 같은 형식으로 작성됩니다. User-agent: * Disallow: / Allow: /index.html 위의 예시에서 User-agent: *는 모든 크롤러에 해당하는 것을 의미합니다. Disallow: /는 모든..
크롤링을 할 때 셀레니움이 필요한지 확인하는 방법
크롤링을 할 때 셀레니움이 필요한지 확인하는 방법은 크게 두 가지가 있습니다. 자바스크립트 사용 중지 웹 브라우저의 개발자 도구에서 자바스크립트를 사용 중지하고 페이지를 확인하는 방법입니다. 자바스크립트가 사용 중지되면 웹 페이지의 동적인 요소가 모두 숨겨지고, 정적 요소만 표시됩니다. 따라서, 페이지의 내용을 정적 요소만으로 추출할 수 있다면 셀레니움이 필요하지 않습니다. 개발자 도구에서 자바스크립트 사용 중지 방법 크롬 브라우저의 경우 다음과 같은 방법으로 개발자 도구에서 자바스크립트 사용을 중지할 수 있습니다. 크롬 브라우저에서 페이지를 열고, F12 키를 누릅니다. 개발자 도구가 열리면, 환경설정을 선택합니다. 디버거 항목의 자바스크립트 사용 중지(Disable JavaScript) 체크박스를..
크롤링 요소 검색 비교 : Selenium vs BeautifulSoup
Selenium과 BeautifulSoup은 모두 웹 페이지를 자동화하는 데 사용되는 프레임워크입니다. 두 프레임워크 모두 웹 페이지에서 요소를 찾을 수 있는 find 함수를 제공합니다. 이 글에서는 Selenium과 BeautifulSoup에서 find 함수의 성능을 비교해 보겠습니다. 테스트 코드 from bs4 import BeautifulSoup from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() driver.get('https://www.naver.com/') html = BeautifulSoup(driver.page_source, 'html.parser') sta..
파이썬 리스트 컴프리헨션
파이썬 리스트 컴프리헨션은 리스트를 생성하는 간단하고 효율적인 방법입니다. 리스트 컴프리헨션은 for 루프를 사용하여 리스트를 생성하는 것과 유사하지만, 더 간결하고 읽기 쉽습니다. 기본 구조 리스트 컴프리헨션의 기본 구조는 다음과 같습니다. [표현식 for 요소 in 시퀀스] 표현식은 각 요소의 값을 지정합니다. 요소는 시퀀스의 각 요소를 나타냅니다. 시퀀스는 리스트를 생성할 요소를 포함하는 시퀀스입니다. 예제 다음은 리스트 컴프리헨션을 사용하여 1에서 10까지의 정수 리스트를 생성하는 코드입니다. numbers = [i for i in range(1, 11)] 이 코드는 다음과 같이 작동합니다. range(1, 11) 함수를 사용하여 1에서 10까지의 정수 시퀀스를 생성합니다. for 루프를 사용하여..
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 모드 ..
네이버 블로그 리뷰 크롤링
터미널에 작성된 로그는 데이터프레임의 인덱스, 블로그 타이틀 로직 크롤링으로 획득한 음식점의 Place_Id로 블로그 리뷰 주소(url)을 찾고 블로그에 requests 요청을 해 획득한 text를 BeautifulSoup로 html 변환 데이터 파싱 수집한 데이터 블로그 글 제목 블로그 글 내용 글쓴이 작성 날짜 태그 url 좋아요도 수집하려 하였으나, js를 실행하지 않으면 빈칸이다. 셀레니움을 사용하지 않아 속도가 매우 빠르지만, 블로그 url을 찾는 과정에서 매우 애를 먹었다. 현재 속도도 마음에 들지 않아 더욱 빠르게 할 수 있는 방법을 고민 해 봐야겠다
하나의 리스트를 여러개로 나누기
리스트를 나누는 방법에는 여러 가지가 있습니다. 가장 일반적인 방법은 for 루프를 사용하는 것입니다. 다음은 for 루프를 사용하여 리스트를 1000개씩 나누는 코드입니다. for문 사용 index = [row.index[i * 1000:(i + 1) * 1000].tolist() for i in range(0, int(len(row.index) / 1000))] 이 코드는 다음과 같이 작동합니다. range() 함수를 사용하여 0부터 len(row.index) / 1000 미만의 값을 생성합니다. for 루프를 사용하여 생성된 값을 순회합니다. i * 1000부터 (i + 1) * 1000까지의 인덱스 값을 가져옵니다. 가져온 인덱스 값을 리스트로 변환합니다. 변환된 리스트를 index 리스트에 추가..