웹 크롤링
파이참에서 상단 메뉴 FIle 에서 Settings를 눌러줍니다.
Project Interpreter을 선택해 주고 좌측 상단에 + 버튼을 눌러줍니다.
bs4를 선택하고 Install을 합니다.
성공 메시지가 떴습니다.
정상적으로 다운이 됐습니다.
네이버에서 특정 글자 추출하기
import urllib.request
url = "https://www.naver.com/"
html = urllib.request.urlopen(url)
print(html.read())
웹에서 데이터를 받아오려면 http request라는 요청을 보내서 받아와야 합니다.
파이썬에서 웹의 특정 주소로 요청을 보내는 기능이 urlib.request입니다.
urlib.reqeuest의 urlopen 함수로 네이버 첫 페이지를 불러옵니다.
html = urllib.request.urlopen(url)
에서 html이라는 변수 안에 텍스트 형식으로 네이버 첫 페이지를 호출한 데이터가 문자열 형태로 저장됩니다.
뷰티풀숍에 데이터 넣기
import urllib.request
import bs4
url = "https://www.naver.com/"
html = urllib.request.urlopen(url)
bs_obj = bs4.BeautifulSoup(html, "html.parser")
print(bs_obj)
urlopen() 함수를 이용해 URL을 호출한 데이터를 불러왔습니다.
이 데이터를 파싱하기 위해 뷰티솝에 데이터를 넣은 후 파이썬에서 가공할 수 있는 형태로 만들어야 합니다.
bs4.BeautifulSoup()
에 웹에서 받은 텍스트를 html 변수에 넣습니다.
BeautifulSoup(<받은 텍스트>,<텍스트를 파싱할 파서>)
에는 2개의 값이 들어가 있습니다.
첫 번쨰는 웹에서 받은 텍스트, 두 번쨰는 데이터를 뽑아내는 (파싱) 프로그램인 "html.paeser"입니다.
뷰티풀솝으로 필요한 부분 뽑아내기
크롬에서 개발자모드를 켜주고 마우스 누르는 아이콘을 선택해 네이버를 시작페이지로 글자를 눌러주면 링크가 나옵니다.
HTML 소스를 분석해 보면 <div > 태그 안에 <a> </a>가 들어 있습니다.
<div> 태그 안에 class="service_area"는 속성이라고 하고 Class= 로 시작하므로 클래스 속성, 클래스 라고 부릅니다.
import urllib.request
import bs4
url = "https://www.naver.com/"
html = urllib.request.urlopen(url)
bs_obj = bs4.BeautifulSoup(html, "html.parser")
top_right = bs_obj.find("div", {"class" : "service_area"})
print(top_right)
파이썬에서 <div> 영역을 추출합니다.
import urllib.request
import bs4
url = "https://www.naver.com/"
html = urllib.request.urlopen(url)
bs_obj = bs4.BeautifulSoup(html, "html.parser")
top_right = bs_obj.find("div", {"class" : "service_area"})
first_a = top_right.find("a")
print(first_a.text)
top_right = bs_obj.find("div", {"class" : "service_area"})
.find() 명령어를 <div> 태그 중에 class가 service_area인 첫 번쨰로 나오는 div를 찾으라는 명령입니다.
div 태그 안에는 <a> 태그가 있으므로 .find() 명령어 첫번째에 나오는 a태그를 찾은 뒤에 first_a.text로 a태그 안에 있는 text만 뽑아 냅니다.
'프로그래밍언어 > Python' 카테고리의 다른 글
[Python] : Selenium 라이브러리 설치 및 WebDriver 다운로드하기 (0) | 2021.11.17 |
---|---|
[Python] : 정적 웹 페이지 크롤링 (0) | 2021.11.17 |
[Python] : 미니 포토샵 프로젝트 (2부) (0) | 2021.11.10 |
[Python] : 미니 포토샵 프로젝트 (1부) (0) | 2021.11.10 |
[ Python] : 그림판 프로그램 (0) | 2021.11.10 |
댓글