국비 교육/데이터26 [데이터 수집] 셀레니움 -1 BeautifulSoup = 자바스크립트를 사용하여 동적으로 생성된 정보는 가져올 수 없다. 동적 홈페이지를 활용하기 위해서 사용하는 패키지 Selenium - URL만으로 접근할 수 없는 홈페이지에 접근 - 크롤링이 목적 아닌 만들어진 홈페이지를 테스트하고 웹 브라우저를 제어할 목적으로 사용된다 - 브라우저를 직접 제어하여 사이트의 다양한 HTML 요소에 클릭, 키보드 입력 등 이벤트 처리를 할 수 있다. - 웹 드라이저로 브라우저를 직접 띄우고 제어하여 상대적으로 로딩이 오래 걸림 - 따라서 time 모듈의 sleep 함수와 함께 조금씩 시간차를 두고 실행하는 것이 좋다. 패키지 설치 방법 # 아나콘다 프롬프트 pip install selenium pip install webdriver_manager.. 2023. 11. 1. [데이터 수집] 웹 스크래핑 예제 - 네이버 뉴스 페이지 언론사 목록, 네이버 웹툰 제목 가져오기, 다음 영화 사이트에서 영화 포스터 다운로드 [실습] 네이버 뉴스 페이지 언론사 목록 가져오기 print(result.children) 은 안 나오는데, news_list = [ list(tag.children)[0] for tag in result] 는 나오는 이유: BeautifulSoup 의 라이브러리인 find_all = 기준에 맞는 태그를 모두 가져와 리스트 타입으로 반환하는 함수이다. print(type(result)) 출력: 는 list처럼 취급할 수 있다는 것이다. 그 값을 인덱싱 하기 위해서는 for문에 돌려 값을 빼와 사용해야하기 때문에, 리스트 형태로 묶인 것이 문자열 형태로 바뀌게 되어 다시 list 형태로 만들어 주는 것이다. # 언론사에 이름만 가져와서 저장 -> 리스트에 저장 import re import requests.. 2023. 11. 1. [데이터 수집] 웹 스크래핑 - 2 BeautifulSoup 패키지 import requests from bs4 import BeautifulSoup 설치 parser 종류 - html.parser : 파이썬 기본제공 - lxml : 기본값 - xml - html5lib from bs4 import BeautifulSoup # html.parser soup = BeautifulSoup('','html.parser') print('html.parser') print(soup) # html.parser # 강제 형변환 #lxml soup = BeautifulSoup('','lxml') print('lxml') print(soup) # lxml # 강제 형변환 기본 사용법 - text: 태그 없이 안에 내용만 출력 - name: 태그 이름 출력.. 2023. 10. 31. [데이터 수집] 정규 표현식(Regular Expression) -3 표현식 2는 결과로 반환하지 않는다. 전방탐색 - 긍정 전방탐색: 표현식1(?= 표현식2) - 부정 전방탐색: 표현식1(?! 표현식2) 포함하지 않을때 import re # 긍정 전방탐색 # url 에서 프로토콜 이름만 검색 p = re.compile('.+(?=:)') # dot(.) 메타문자가 줄바꿈 문자(\n)를 포함, 모든 문자와 일치하는지 검색 m = p.search('http://www.google.com') print(m.group()) # http # 부정 전방탐색 # 파일 이름의 확장자 중에서 'bat' 파일만 제외하고 추출 file_names = ['autoexe.bat','python.exe','sysinfo.cf'] p = re.compile('[a-zA-Z]+\w*[.](?!bat.. 2023. 10. 31. [데이터 수집] 정규 표현식(Regular Expression) -2 re 모듈 compile() 모듈 사용하여 정규표현식 컴파일 impor re p =re.compile('ab*') 대표적인 모듈 - match() : 문자열의 처음부터 검색하여 일치여부 판단 - search() : 문자열의 전체를 검색. 중간에라도 매치되면 결과를 반환한다 - findall() : 정규식과 매치되는 모든 문자열 리스트로 반환 - finditer() : 정규식과 매치되는 모든 문자열 튜플로 반환 # match() m1 = p.match('python') print(m1) # m3 = p.match('3 python') print(m3) # None # search() m = p.search('3 python') print(m.group()) # python # findall() p = re.. 2023. 10. 31. [데이터 수집] 정규 표현식(Regular Expression) -1 정규표현식: 복잡한 문자열을 처리할때 사용하는 기법 # 정규표현식: 비사용 방식 data = """ park 800904-1234567 kim 841204-1034562 """ result = [] for line in data.split('\n'): word_result = [] for word in line.split(): if len(word) == 14 and word[:6].isdigit() and word[7:].isdigit(): # isdigit() # 숫자 여부 체크 word = word[:6] + '-' + '*******' word_result.append(word) result.append(''.join(word_result)) # 이름, 주민번호를 다시 공백으로 묶음 print('.. 2023. 10. 31. [데이터 수집] Web 구성요소 HTML (Hypertext Markup Language) 웹문서를 구성하는 요소 : HTML(정적인 요소), CSS(디자인적 요소), JavaScript(반응형 웹) 2023. 10. 30. [데이터 수집] 웹 스크래핑 -1 Web Crawling: 인터넷에서 웹페이지를 자동 탐색하고 수집하는 과정 Web Scrapping: 웹 페이지 내에서 원하는 정보를 추출하는 기술을 말함(즉 구조에 맞춰 코드를 가져오는 것을 말한다.) robots.txt crawling 적법성 여부 확인 웹 사이트에 웹 크롤링 봇들의 접근에 제약을 두기 위한 규약이다. 밑에 사진은 https://www.google.co.kr/robots.txt 안에서 확인한 본문이다. 구글 사이트에서 크롤링 가능한 범위를 규정해 놓았다. Request 요청의 종류 - GET (정보를 가져오기 위해 요청) - POST (새로운 정보를 보내기 위해 요청) - PUT (수정할 정보를 보내기 위해 요청) - DELETE (정보를 삭제하기 위해 요청) response = re.. 2023. 10. 30. 이전 1 2 3 다음