[웹 크롤링] 메타코드 강의 후기 - "4강 관광 상품 리뷰 크롤링 및 분석 프로젝트(1)"
하나투어 페이지의 주소는 아래와 같습니다.
페이지 Url 변화 확인
"하나투어" 홈페이지에서 베스트탭을 눌러 상품을 찾습니다.
하나의 상품을 선택하고, 아래로 스크롤을 하면 "여행후기" 탭을 확인할 수 있습니다.
여행후기탭을 누를 때와 누르지 않았을 때 url에는 변화가 생기지 않는 모습을 볼 수 있습니다.
이러한 상황에서 selenium을 통한 크롤링이 유용합니다.
여행후기 버튼 클릭 구현
여행후기 버튼 클릭을 구현하기 위하여 F12를 눌러 개발자 모드를 실행합니다.
개발자 모드에서 마우스 버튼을 클릭한 뒤에, "여행후기" 탭을 눌러 태그를 확인하고 XPath를 복사합니다.
아래의 코드에 복사한 값을 붙여넣습니다.
review_link = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '//*[@id="ulTag"]/li[6]/a')))
여기에서 웹페이지가 로드될 때까지 기다리도록 "EC.presence_of_element_located()"를 활용합니다.
Box 안의 요소 불러오기, selector 복사
후기 안의 요소들을 불러오는 것이 목표입니다.
개발자 모드에서 마우스를 통해 Box의 태그 정보들을 확인하고 "Copy selector"를 수행합니다. 결과는 아래와 같습니다.
"sticky06 > div > div.rating_list > ul > li:nth-child(1)"
현재 클래스는 "list_review_v2" 입니다.
따라서 'ul.list_review_v2 > li' 를 통하여 클래스가 list_review_v2인 ul 태그들의 자식들인 li들을 찾습니다.
코드는 아래와 같습니다.
lis = driver.find_elements(By.CSS_SELECTOR, 'ul.list_review_v2 > li')
리뷰에 대한 정보 추출
리뷰의 정보들을 하나씩 추출하는 것이 목적입니다.
리뷰의 정보들dms 'rating_info' 클래스 안에 span 태그로 기록되어 있습니다.
따라서 find_elements(By.TAG_NAME, 'span')을 통하여 각 요소들에 접근합니다.
딕셔너리에 적절한 키 이름을 정의하고 spans[1].text 문법 구조를 통해 해당 값를 넣습니다.
리뷰 정보, 리뷰 카테고리 정보 추출
리뷰 정보와 리뷰 카테고리를 추출하는 것이 목적입니다.
여기에서는 if 문법을 사용하여 정보가 있으면 해당 정보를 담고, 정보가 없다면 빈 칸으로 하였습니다.
클래스 이름은 F12 개발자 모드에서 확인한 결과 각각 'review_count.con', 'review_cate'입니다.
각각 'review', 'review' 를 키 값으로 하여 .text를 통해 value로 딕셔너리에 추가합니다.
추출된 정보를 데이터프레임 형태로 변환
for문의 마지막에 reviews.append(review_info)를 작성하여 만들어진 딕셔너리를 위에서 만든 reviews 리스트에 담습니다.
리스트 안에는 딕셔너리 형태의 정보가 담겨있으며, 리스트의 키 값에는 'rating', 'user', 'category', 'date', 'age', 'review', 'review_cate'가 있습니다.
데이터프레임으로 만들기 위하여 pd.DataFrame(reviews)를 사용합니다.
출력을 하면 올바른 결과가 나옴을 확인할 수 있습니다.
'Crawling - 메타코드' 카테고리의 다른 글
[웹 크롤링] 메타코드 강의 후기 - "4강 관광 상품 리뷰 크롤링 및 분석 프로젝트(3), 완강 후기" (0) | 2024.04.28 |
---|---|
[웹 크롤링] 메타코드 강의 후기 - "4강 관광 상품 리뷰 크롤링 및 분석 프로젝트(2)" (0) | 2024.04.25 |
[웹 크롤링] 메타코드 강의 후기 - "3강 예매 가능한 기차표 찾기 프로젝트" (0) | 2024.04.16 |
메타코드 강의 후기_2강 : 뉴스 크롤링 자동화 프로젝트 - "크롤링이 안될 때", "Selenium, WebDriver 이용 크롤링" (0) | 2024.04.13 |
메타코드 - [ 효율적 뉴스 정보 수집 ] 메타코드 강의 후기 ( 2강 : 뉴스 크롤링 자동화 프로젝트 ) (1) | 2024.04.12 |