브라우저
스크래핑을 진행할 때는 크롬 브라우저를 권장합니다. 아래의 공식 홈페이지에서 다운로드할 수 있습니다.
태그 구성
HTML 태그에는 속성명 과 속성값 이 있을 수 있습니다.
태그명 은 보라색, 속성명 은 주황색, 속성값 속성값은 파란색으로 표기되는 것이 기본입니다.
<a class = "a_class_name"> </a>
<h1 id = "h1_id_name"> </h1>
CSS 선택자
CSS는 웹의 디자인을 위한 언어입니다. CSS 선택자는 해당 HTML 태그 또는 속성명, 속성값를 선택하는 것을 의미합니다.
웹 스크래핑을 위해 CSS 선택자를 사용하는 경우가 많으므로 아래의 표를 참고하여 활용하는 것을 권장합니다.
구분 | 설명 | 예시 |
태그 선택자 | 태그 이름을 선택 | div, a, span, h1 |
id 선택자 | 개별 요소의 별칭 | #id |
class 선택자 | 태그 그룹의 별칭 | .class |
자식 선택자 | 원하는 태그의 부모 태그를 활용하여 선택 | .parent class>tag |
태그 확인
Cmd + Shift + C 또는 F12 를 눌러 개발자 도구를 호출할 수 있습니다.
선택자로 원하는 항목을 클릭하면 해당하는 HTML 코드를 확인할 수 있습니다.
Requests 및 BeautifulSoup 설치
Requests 는 HTTP 통신을 위한 파이썬 라이브러리입니다.
Requests 는 get get 요청과 post 요청으로 이루어져 있습니다.
get 요청은 특정 웹페이지를 보여달라고 서버에 요구하는 것이고,
post 요청은 특정 정보와 함께 서버에 요구를 하면 서버가 이에 대한 응답을 주는 것입니다.
BeautifulSoup 은 HTML 분석을 위한 파이썬 라이브러리입니다.
OS의 기본 터미널에서 pip install requests 를 실행하여 requests 를 설치하고,
pip install beautifulsoup4 를 실행하여 BeautifulSoup 을 설치합니다.
이후 VSC의 cmd 터미널에서 pip install requests 를 실행하여 requests 를 설치할 수 있습니다.
cmd 터미널이 아닌 경우, VSC를 재실행 하면 기본 터미널이 변경됩니다.
bash, zs로 설정된 경우 해당 터미널을 이용할 수 있습니다.
VSC의 터미널 우측에서 새 터미널 > Command Propmt 를 클릭하면 설정이 변경됩니다.
상태코드 확인
스크래핑을 진행하기 전, 해당 URL의 status_code 를 확인할 수 있습니다.
print(res.status_code) 가 200 이면 정상입니다.
mdn web docs 문서에서 상태 코드를 확인할 수 있습니다.
import requests
from bs4 import BeautifulSoup
res = requests.get("<https://class101.net/search?query=%EC%84%9C%ED%95%91>")
print (res.status_code)
특정요소 스크래핑
requests.get("URL 주소") 의 모든 HTML 요소를 가져올 수 있습니다. 출력에서 확인할 수 있습니다.
import requests
response = requests.get("URL주소")
html = response.text
print(html)
정상적으로 동작한다면 print(html) 을 지우고 soup 변수에 BeautifulSoup(html,"html.parser") 를 저장합니다.
이후 CSS 선택자를 이용해 원하는 태그를 word 변수에 soup.select_one("CSS 선택자") 로 저장합니다.
마지막으로 출력을 위해 print(word.text) 을 실행하여 출력에서 수집된 요소를 확인합니다.
#라이브러리를 가져옵니다.
import requests
from bs4 import BeautifulSoup
#HTML을 가져옵니다.
res = requests.get("URL주소")
html = res.text
#HTML을 분석합합니다.
soup = BeautifulSoup(html,"html.parser")
#CSS 선택자에 해당하는 요소 1개를 가져옵니다.
word = soup.select_one("CSS 선택자")
#가져온 요소를 출력합니다.
print(word)
만약, 네이버의 네이버를 시작페이지로 텍스트버튼을 스크래핑하려면 다음과 같이 작성하면 됩니다.
import requests
from bs4 import BeautifulSoup
res = requests.get("https://www.naver.com/")
html = res.text
soup = BeautifulSoup(html,"html.parser")
word = soup.select_one("#NM_set_home_btn")
print(word)
위와 같이 입력하면, 출력에서 아래와 같이 HTML 코드가 수집된 것을 확인할 수 있습니다.
[Running] python -u "/Users/seula/Documents/개발/파이썬/TEST.py" 네이버를 시작페이지로
[Done] exited with code=0 in 0.574 seconds
'참고자료' 카테고리의 다른 글
파이썬 Pyautogui 검색결과 전체 웹 스크래핑 (0) | 2022.06.05 |
---|---|
파이썬 및 아나콘다 설치 및 설정 (0) | 2022.06.05 |
Visual Studio Code 설치 및 한국어 언어팩 확장 (0) | 2022.06.04 |