이전에는 크롤링 대상 태그를 찾고, 해당 태그의 Text 값을 불러왔다.
이번에는 Text가 아닌 크롤링한 태그의 속성값을 불러오는 방법을 정리하려 한다.
1. 상품 이동 태그 찾기
네이버 도착 보장 서비스에서는 해당 상품의 이미지, 가격 등 어느 부분을 클릭해도 해당 상품의 자세한 링크로 이동할 수 있다.
링크로 이동되는 html 태그는 a태그를 사용한다. 따라서 a태그를 가진 부분의 셀렉터를 찾아주면 된다.
a태그를 Control + SHIFT + C 를 사용해서 찾아주었다.
우측의 html 문서를 보면 저번에 찾아두었던 ul 태그부터 ul > li > div > a 경로에 a태그가 존재하는 것을 확인할 수 있다.
따라서 저번에 찾아둔 경로에서 ul > li > div > a 경로를 셀렉터로 지정해 준다.
links_selector = "#content > div > div.homePageResponsive_best_wrap__3KGye > div > div > ul > li > div > a"
마찬가지로 위에서 찾은 셀렉터로 크롤링 코드를 작성한다.
links = driver.find_elements(By.CSS_SELECTOR, links_selector)
a태그에서 우리가 필요한 정보는 주소이기 때문에 href 속성의 해당하는 값을 가져오면 된다.
print("주소: ", link.get_attribute("href"))
크롤링한 태그의 속성값을 가져오기 위해서는
get_attribute()
메서드를 사용해 주면 된다.
인자로 가져오고 싶은 속성의 종류를 입력하면 해당 속성의 값을 가져올 수 있다.
우리가 필요한 주소의 속성은 href 이기 때문에 위와 같이 작성했다.
최종 결과
최종 코드
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(service= Service(ChromeDriverManager().install()))
url = "https://shopping.naver.com/logistics/home"
item_selector = "#content > div > div.homePageResponsive_best_wrap__3KGye > div > div > ul > li > div > div:nth-child(2) > strong"
price_selector = "#content > div > div.homePageResponsive_best_wrap__3KGye > div > div > ul > li > div > div.productCardResponsive_information__1HK4_ > div.productCardResponsive_price_area__3lo44 > span"
links_selector = "#content > div > div.homePageResponsive_best_wrap__3KGye > div > div > ul > li > div > a"
driver.get(url)
items = driver.find_elements(By.CSS_SELECTOR, item_selector)
prices = driver.find_elements(By.CSS_SELECTOR, price_selector)
links = driver.find_elements(By.CSS_SELECTOR, links_selector)
print("가져온 상품 수: ", len(items))
for item, price, link in zip(items, prices, links):
print("상품: ", item.text)
print("가격: ", price.text)
print("주소: ", link.get_attribute("href"))
print()
이번에는 간단하게 텍스트가 아닌 속성값을 가져오는 방법에 대해 정리해 보았다.
href가 아닌 class 이름 같은 부분도 가져올 수 있다.
다음에는 스크롤을 통한 크롤링을 구현해 볼 예정이다.
'Study > Python' 카테고리의 다른 글
[Python] 파이썬 코딩테스트 시간 단축하기 (0) | 2023.01.31 |
---|---|
[Selenium] 페이지를 스크롤하며 무한 크롤링 하기 (0) | 2023.01.27 |
Selenium을 활용한 네이버 쇼핑 품목 동적 크롤링 (0) | 2023.01.25 |
[mac] m1 웹 크롤링 Selenium, Chromedriver 설치하기 (1) | 2023.01.22 |
[파이썬] 2차원 이상 배열 다중 조건으로 정렬하기 (0) | 2022.11.17 |