□ 과정
○ 데이터 영역 Select_one으로 지정
○ 영역에서 특정영역 Select 으로 지정
○ 반복문을 활용해 '부모태그.클래스명 > 자식태그.클래스명'식으로 정확한 타겟 지정후 string으로 추출
* ('span.txt-info > strong').next_element 사용시 strong 태그가 열리고나서 출현하는 첫번째 텍스트 또는 태그값 가져옴. 도중 중간에 태그가 있다면 그 전까지만 가져옴. 하위 태그 및 텍스트까지 가져오고 싶다면 .find_next() 활용.
<span class="txt-info">
<strong>
2024.02.07
<span>개봉</span>
</strong>
□ 코드 및 결과
#라이브러리 호출
import requests
from bs4 import BeautifulSoup
#타겟
target_url = 'http://www.cgv.co.kr/movies/'
#request setting
get_info = requests.get(target_url)
all_data = get_info.text
#parser setting
parser_tool = BeautifulSoup(all_data, 'html.parser')
#영역처리
#└영화차트가 모아진 영역 select_one으로 선택
mv_area = parser_tool.select_one('div.sect-movie-chart')
#└영역에 li태그들을 모두 선택하기위해 select 선택
mv_area_list = mv_area.select('li')
#└선택된 li태그 중 하위태그들에 포함된 타이틀이나 예매율 정보 크롤링
for index, v in enumerate(mv_area_list):
index += 1
#(1)영화제목
mv_title = v.select_one('div.box-contents > a > strong.title').string
#(2)예매율
mv_reserve_rate = v.select_one('div.box-contents > div.score > strong.percent > span').string
#(3)평점:에그지수
mv_egg_rate = v.select_one('div.box-contents > div.score > div.egg-gage.small > span.percent').string
#(4)개봉일
# .next_element = 앞에서 태그지정하고 그다음 바로 요소(택스트)를 바로 가져옴
mv_opendate = v.select_one('div.box-contents > span.txt-info > strong').next_element.strip()
print(f'□ {index} 순위 영화\t:\t{mv_title}\n예매율\t:\t{mv_reserve_rate}\t/\t평점(에그지수)\t:\t{mv_egg_rate}\n개봉일\t:\t{mv_opendate}')
'Python > Python_Crawling' 카테고리의 다른 글
특정 사이트 크롤링 및 데이터프레임 생성 (0) | 2024.02.13 |
---|---|
쿠팡 : 상품 검색결과 중 로켓배송인 상품 크롤링 (0) | 2024.02.13 |
SSG 이벤트 크롤링 : select, find_all(string=True) (1) | 2024.02.09 |
다음 뉴스(제목, 링크, 회사, 카테고리) 크롤링 (1) | 2024.02.05 |
.text 와 .string 차이점(보완) (0) | 2024.02.02 |