[Playwright/Python] 비동기 처리가 가능한 웹 스크래핑 라이브러리, Playwright
·
Minding's Programming/Crawling
프로그래머스 데이터 엔지니어링 데브코스 프로젝트 중 동적 웹 페이지에서 브라우저 조작 및 스크래핑으로 데이터를 수집해야하는 작업이 있었다. 처음에는 기존에 사용하던 Selenium을 사용했지만, 수집할 데이터가 다수였던 만큼 시간이 너무 많이 소요된다는 단점이 있었다. 시간 비용 소모 문제를 해결하기 위해 Selenium을 사용하는 함수를 비동기 프로그래밍 처리하려고 했지만, Selenium은 기본적으로 비동기 처리를 지원하지 않기 때문에 다소 복잡한 과정을 거쳐야 한다.(driver를 가져오는 함수는 따로 작성하고 sync to async를 통해 처리해줘야 한다던지... 등등) Selenium의 비동기 처리 문제를 해결하던 중, 우연히 검색을 통해 비동기 프로그래밍을 지원하는 브라우저 제어 라이브러리가..
[BeautifulSoup/Selenium] BeautifulSoup, Selenium 기본 정리
·
Minding's Programming/Crawling
BeautifulSoup - HTML Parser가 필요한 이유DOM(Document Object Model)웹 문서의 구조화된 표현으로, 프로그래밍 언어가 웹 페이지 내의 객체에 접근하고 조작할 수 있게 하는 인터페이스로 동작한다. 주로 자바스크립트에서 웹 페이지의 요소를 선택, 수정, 추가 또는 제거할 때 사용된다. 트리 모양처럼 생기기도 한 DOM은 각 노드를 객체 타입으로 여겨 문서 관리를 더욱 편리하게 한다.웹 브라우저는 DOM을 생성한 후 DOM Tree를 순회해서 특정 원소를 추가/삭제하거나(동적 프로그래밍), 쉽게 찾을 수 있다. 즉, DOM을 이용하면 웹 스크래핑/크롤링도 찾고자 하는 요소를 쉽게 찾을 수 있다. Python으로 HTML 문서를 파싱해서 분석하는 Parser가 있다면, D..
[HTTP/Python] HTTP 통신, 웹 스크래핑/크롤링 기본 개념 정리
·
Minding's Programming/Crawling
인터넷과 웹웹이 등장하기 까지의 과정:네트워크: 두 컴퓨터 간의 통신망LAN: 근거리 통신망 네트워크 Internet: 범지구적으로 연결된 네트워크WEB: 인터넷 상에서 정보를 교환하기 위한 시스템으로 개발됨 웹에서 정보를 주고받는 방법클라이언트(사용자)가 서버에 정보 요청 (= Request)서버에서 클라이언트 요청에 대한 처리 진행상황에 따른 응답 (응답코드를 리턴, ex) 2XX(성공), 4XX(클라이언트 에러), 5XX(서버 에러)) HTTP(Hypertext Transfer Protocol)의 구조HTTP는 웹 상에서 정보를 주고받기 위한 일종의 약속이다. 기본적으로, 클라이언트에서 서버로 정보를 요청하고(HTTP 요청(Request)) 요청된 정보에 대해 서버가 클라이언트에게 응답(HTTP 응..
[Python/Selenium] (업데이트)Selenium으로 KBO 경기 일정 크롤링하기
·
Minding's Programming/Crawling
2024.07.01 - [Minding's Programming/Knowledge] - [Python/Selenium] Selenium으로 KBO 경기 일정 크롤링하기 [Python/Selenium] Selenium으로 KBO 경기 일정 크롤링하기야구장 소개 홈페이지를 만드는 데 경기 일정도 한 페이지에 보여주는 곳이 있으면 좋겠다고 생각이 들었다. KBO 홈페이지에 있는 경기 일정을 주기적으로 크롤링해 이 홈페이지에 노출시키고자minding-deep-learning.tistory.com 이 글은 위 링크의 크롤링 코드를 보완한 코드와 함께 어떻게 보완했는지에 대한 설명을 위한 글이다. 전체 코드 from selenium import webdriverfrom selenium.webdriver.chrome..
[Python/Selenium] Selenium으로 KBO 경기 일정 크롤링하기
·
Minding's Programming/Crawling
https://minding-deep-learning.tistory.com/180 [Python/Selenium] (업데이트)Selenium으로 KBO 경기 일정 크롤링하기2024.07.01 - [Minding's Programming/Knowledge] - [Python/Selenium] Selenium으로 KBO 경기 일정 크롤링하기 [Python/Selenium] Selenium으로 KBO 경기 일정 크롤링하기야구장 소개 홈페이지를 만드는 데 경기 일정도 한 페minding-deep-learning.tistory.com위 글은 본문의 코드를 보완한 코드이다. 야구장 소개 홈페이지를 만드는 데 경기 일정도 한 페이지에 보여주는 곳이 있으면 좋겠다고 생각이 들었다. KBO 홈페이지에 있는 경기 일정을 ..
[Python/Bleach] Bleach 라이브러리 이용해 HTML 태그 삭제하기
·
Minding's Programming/Crawling
네이버 뉴스 API를 통해 뉴스 데이터를 수집하다보니, 뉴스 제목에 해당하는 title에 HTML 태그가 그대로 들어와 문자열에 포함되는 경우가 있었다. 이 문자열 그대로 홈페이지에 노출할 예정이었다 보니, 해당 문자열을 필터를 통해 HTML 태그를 지울 필요가 있었다. 그럴때는 Bleach의 clean메서드를 이용하면 해결할 수 있다. from bleach import cleanarticle = '가나다라'print(clean(article, tags=[], strip=True))>>>'가나다라'