베지밀
[웹 퍼저] 웹 페이지 정적 크롤링 헤메기 (~ing) 본문
#크롤러 #파이썬 #beautifulsoup #Selenium
beautifulsoup로 html 정보 크롤링 해오기 -> 하위 url 수집
css selector보다는 html의 a href 태그 사용하는게 더 범용성 있는 것 같아서(?) 이 방법 사용
1. 정적 크롤링 vs 동적 크롤링
https://velog.io/@ljs7463/%EC%9B%B9-%ED%81%AC%EB%A1%A4%EB%A7%81BeautifulSoup-Selenium
[웹 크롤링]BeautifulSoup, Selenium 비교
정적수집과 동적 수집 ||정적수집|동적수집| |-|-|-| |사용패키지|urllib/requests|selenium |수집|정적인 웹페이지|정적,동적 웹페이지| |수집 속도|빠름(별도 페이지 조작 필요x)|상대적으로 느리다| |파
velog.io
이번주 목표 : urllib와 requests, bs4로 url 긁어오기
정적 페이지 : url 주소 외엔 아무것도 필요 X
동적 페이지 : 로그인을 해야만 접속 가능한 네이버 메일, 마우스 스크롤에 따라 url이 계속 변하는 네이버 지도, 드래그하면 새로운 피드가 계속 등장하는 유튜브나 인스타 …. → selenium으로 구현!
일단 오늘은 정적 크롤링을 구현할 것
2. 정적으로 크롤링하기
정적 크롤링하기 위해 아래 3개의 단계를 수행
1. 페이지 html 문서 싹 긁어오기
2. 긁어온 html 문서 파싱 -> bs4가 해줄 것
3. 파싱한 html 문서에서 원하는 정보 사용 -> 우리는 하위 url을 가져오기 위해 href 태그를 사용
3. 패키지 소개
1. requests
pip install requests
터미널에 위 명령어로 설치
import requests # 패키지 가져오기
url = '' # url 문자열로 입력
response = requests.get(url) # get 함수로 url로부터 html 자료 받아옴
html_text = response.text # 얻고자 하는 html 문서가 담김
2. bs4 : html 문서를 정리(=파싱)하는 모듈
pip install beautifulsoup4
터미널에 위 명령어로 설치
from bs4 import BeautifulSoup as bs # 보통 bs로 줄여서 씀
html = bs(html_text, 'html.parser') # html을 잘 정리된 형태로 반환
4. 파싱까지 하도록 코드 작성
파싱할 사이트는 모의해킹 전용 사이트인 https://demo.testfire.net/을 이용했다. gpt한테 물어보니 위키피디아도 크롤링 가능한 사이트 중 하나라고 한다. 원하는 대로 사용해도 될듯?
from urllib.request import urlopen # url을 html로 열기
from urllib.parse import quote_plus # 한글 인식
from bs4 import BeautifulSoup as bs
import requests
url = 'https://demo.testfire.net/'
response = requests.get(url)
html_text = response.text # html 문서 담기
# bs 객체 생성 (파싱 후 soup 변수에 저장)
soup = bs(response.text, 'html.parser')
4-1. bs4로 가져온 정보 프린트하기
잘 파싱되었는지 확인하기 위해 prettify라는 명령어로 출력해보쟈
print(soup.prettify())
정적 웹 페이지 크롤링
라이브러리 설치BeauitfulSoup을 임포트하여 사용연습용 html을 작성한다.BeautifulSoup 객체를 생성한다.객체에 저장된 html 내용을 확인한다.: 3에서는 분석할 HTML의 실제 웹페이지를 사용하지 않고 html
velog.io
결과 : 요런 식으로 html 값이 잘 가져와졌다
5. html 태그로 구분해서 url 추출