베지밀
[웹 퍼저] 웹 페이지 정적 크롤링 헤메기 (~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
이번주 목표 : 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())
결과 : 요런 식으로 html 값이 잘 가져와졌다
5. html 태그로 구분해서 url 추출