□ 사용 라이브러리
○ requests : 웹페이지 가져오기 라이브러리
○ bs4(BeautifulSoup) : 웹페이지 분석(크롤링) 라이브러리
#라이브러리 임포트
import requests
from bs4 import BeautifulSoup
#웹페이지 가져오기 requests.get()
bring_web = requests.get('https://sports.news.naver.com/news?oid=477&aid=0000464871')
#웹페이지 파싱하기
#.content, 'html.parser' html 관련 태그를 파싱해주는 함수)
parsing = BeautifulSoup(bring_web.content,'html.parser')
print(parsing)
#필요 데이터 추출
mydata_title = parsing.find('title')
mydata_h3 = parsing.find('h3')
#추출 데이터 활용 .get_text()
print(f'title 태그 파싱 데이터\t:\t{mydata_title.get_text()}')
print(f'text 태그 파싱 데이터\t:\t{mydata_h3.get_text()}')
□ 파싱(parsing) : 문자열의 의미를 분석하기위한 행위 / html은 string 형태임
□ 태그별 css 속성등으로 데이터 추출
○ 변수명 = 변수명.find('태그', class_ ='스타일')
○ 변수명 = 변수명.find('태그', '스타일')
○ 변수명 = 변수명.find('태그', attrs = {'align':'center'})
○ 변수명 = 변수명.find(id='아이디명')
# 라이브러리 호출
from bs4 import BeautifulSoup
html_data = """
<html>
<body>
<h1 id='title'>[1]크롤링이란?</h1>
<p class='cssstyle'>웹페이지에서 필요한 데이터를 추출하는 것</p>
<p id='body' align='center'>파이썬을 중심으로 다양한 웹크롤링 기술 발달</p>
</body>
</html>
"""
# html 태그 파싱 함수 호출
parser_data = BeautifulSoup(html_data, "html.parser")
# 파싱 함수를 활용한 태그 데이터 추출
body_data = parser_data.find('body')
h1_data = parser_data.find('h1')
p_data = parser_data.find('p')
#속성값을 활용하여 호출
p_data_attr1 = parser_data.find('p', class_='cssstyle') #클래스명 지정으로 호출
p_data_attr2 = parser_data.find('p', attrs = {'class' : 'cssstyle'}) #속성값 지정으로 호출
p_data_attr3 = parser_data.find('p', attrs={'id':'body'}) #id를 지정하여 호출
p_data_attr4 = parser_data.find('p', attrs={'align':'center'}) #id를 지정하여 호출
# 태그별 텍스트 추출 .get_text()
print(f'body_data get_text()\t:\t{body_data.get_text()}' )
print(f'h1_data get_text()\t:\t{h1_data.get_text()}')
print(f'p_data get_text()\t :\t{p_data.get_text()}')
print(f'body_data string\t:\t{body_data.string}' ) #body를 제외한 나머지는 출력됨
print(f'h1_data string\t:\t{h1_data.string}')
print(f'p_data string\t:\t{p_data.string}')
print(f'p_data_attr1 값\t:\t{p_data_attr1.string}')
print(f'p_data_attr2 값\t:\t{p_data_attr2.string}')
print(f'p_data_attr3 값\t:\t{p_data_attr3.string}')
print(f'p_data_attr4 값\t:\t{p_data_attr4.string}')
#조건에 해당하는 태그내의 모든 값을 가져오는 것으로 get_text()와 for문을 활용하여 출력
#find_all을 사용하면 데이터를 리스트형태로 데이터를 추출 저장함 때문에 for문을 사용함
p_data_all = parser_data.find_all('p')
a = 0
for i in p_data_all:
a += 1
print(f'p태그안의 {a} 값\t:\t{i.get_text()}')
'Python > Python_Crawling' 카테고리의 다른 글
크롤링 예제 3 (0) | 2023.12.19 |
---|---|
크롤링 예제 2 (0) | 2023.12.19 |
셀레니움(Selenium) 기본예제 : naver 쇼핑 특정상품 위치 (0) | 2023.12.14 |
셀레니움(Selenium) 기본예제 : naver view 특정글 위치 (0) | 2023.12.13 |
셀레니움(Selenium) 기본기능 (0) | 2023.12.12 |