커맨드 명령장으로 이동하여 BeautifulSoul4를 설치합니다.
pip install beautifulsoup4
pip show 명령어로 설치되었는지 확인합니다.
pip show beautifulsoup4
아래와 같은 결과 나온다면 정상 설치가 된 것입니다.
Beatifulsoup4 사용하기 위해 IMPORT 하기
import urllib.request
from bs4 import BeautifulSoup
# 최상단에 선언 합니다.
URL의 주소에 접속하여 BeatifulSoup4 데이터 설정하는 단계
import urllib.request
from bs4 import BeautifulSoup
#url 은 네이버에 파이썬이라고 검색하고 나온 검색결과 URL 주소로 설정
url = 'https://search.naver.com/search.naver?where=view&sm=tab_jum&query=%ED%8C%8C%EC%9D%B4%EC%8D%AC'
#url 주소를 웹 페이지 읽어 오기
html = urllib.request.urlopen(url).read()
#HTML 데이터를 BeautifulSoup 읽기
soup = BeautifulSoup(html, 'html.parser')
# 결과 확인
print(soup)
아래 화면처럼 나온다면 성공한 것이다. 원하는 데이터를 정제한 것이 아니라 웹사이트의 모든 HTML을 나오도록 하였기 때문에 전체 태그가 나온다.
강좌에서는 'sh_blog_title' 로 class 명을 찾도록 되어 있지만 CHROME 브라우저에서 F12로 확인 결과 CLASS 명이 변경되어 있다. 그리하여 'api_txt_lines total_tit'으로 변경하였다.
import urllib.request
from bs4 import BeautifulSoup
url = 'https://search.naver.com/search.naver?where=view&sm=tab_jum&query=%ED%8C%8C%EC%9D%B4%EC%8D%AC'
# url 주소를 웹 페이지 읽어 오기
html = urllib.request.urlopen(url).read()
# HTML 데이터를 BeautifulSoup 읽기
soup = BeautifulSoup(html, 'html.parser')
# html attribute 의 이름이 sh_blog_title 인 모든 node 를 찾는 함수
title = soup.find_all(class_='api_txt_lines total_tit')
# 결과 확인
print(title)
BeautifulSoup으로 읽은 데이터에서 속성이 title과 href(하이퍼링크) 데이터만 출력하도록 한다.
전체 데이터를 출력하게 되어있어서 어떤 정보가 의미 있는 데이터인지 확인할 수가 없다. 원하는 속성(TAG)만 출력하기 위해서 아래처럼 반복문에서 href 속성을 갖고 있는 노드만 출력하도록 변경하였다. e.g) print(i.attrs['href']) 코드의 의미이다.
for i in title:
print(i.attrs['href'])
print()
하지만 현재 페이지의 HTML Tag에는 title 속성이 없어서 출력할 수 없다. href 링크 속성만 출력하도록 한다.
import urllib.request
from bs4 import BeautifulSoup
url = 'https://search.naver.com/search.naver?where=view&sm=tab_jum&query=%ED%8C%8C%EC%9D%B4%EC%8D%AC'
# url 주소를 웹 페이지 읽어 오기
html = urllib.request.urlopen(url).read()
# HTML 데이터를 BeautifulSoup 읽기
soup = BeautifulSoup(html, 'html.parser')
# html attribute 의 이름이 sh_blog_title 인 모든 node 를 찾는 함수
title = soup.find_all(class_='api_txt_lines total_tit')
#강좌에서는 attrs['title'] 속성을 읽어서 처리 하게 되어있지만 현재 속성이 없다.
for i in title:
print(i.attrs['href'])
print()
# 결과 확인
# print(title)
title 속성이 없어서 href 속성만 출력한 결과이다. 데이터 정제를 위해서 네이버 검색 결과에서 필요한 정보인 title 과 href 모두 출력 못한 것이 아쉽다.
import urllib.parse 필요
baseUrl 른 그대로 사용하고 input 메서드로 사용자에 입력을 받아 입력받은 문자열을 quote_plus로 정제하여 쿼리 문과 연결하여 검색할 수 있도록 처리 추가
import urllib.request
import urllib.parse
from bs4 import BeautifulSoup
baseUrl = 'https://search.naver.com/search.naver?where=view&sm=tab_jum&query='
# 사용자에게 입력을 받아서 입력된 단어로 검색하기
plusUrl = input('검색어를 입력하세요: ')
# 쿼리와 검색어를 합쳐서 url 로 만들기
url = baseUrl + urllib.parse.quote_plus(plusUrl)
# url 주소를 웹 페이지 읽어 오기
html = urllib.request.urlopen(url).read()
# HTML 데이터를 BeautifulSoup 읽기
soup = BeautifulSoup(html, 'html.parser')
# html attribute 의 이름이 sh_blog_title 인 모든 node 를 찾는 함수
title = soup.find_all(class_='api_txt_lines total_tit')
#강좌에서는 attrs['title'] 속성을 읽어서 처리 하게 되어있지만 현재 속서이 없다.
for i in title:
print(i.attrs['href'])
print()
# 결과 확인
# print(title)
OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized (0) | 2022.01.25 |
---|---|
파이썬 마우스, 키보드 자동화 PYAUTOGUI 기초 (0) | 2021.05.12 |
[정규표현식] Meta sequence - 글자 대표문자 (0) | 2018.12.03 |
[정규표현식] Quantifier - 0 개 이상 (0) | 2018.12.03 |
[정규표현식] Quantifier - 있거나 없거나?(2) (0) | 2018.12.03 |
댓글 영역