웹 크롤링 값이 다른경우

조회수 557회
//import requests
from bs4 import BeautifulSoup

headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}

_url = "https://band.us/discover/band-search/"
keyword = "여행"
url = _url+keyword

data = requests.get(url,headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')

band_info = soup.select('#content > main > div > div._globalSearchContentRegion > div > section > h2')

print(url)
print(band_info)

안녕하세요. 위와 같이 크롬 웹에서 보이는대로 해당 주소의 네이버 밴드의 정보를 가져와보고싶은데, 실제로 가져와지는 값이 다릅니다. band_info는 결국 빈 리스트만 반환이 되는데요.

혹시 제대로 가져올 수있을 방법이 있을지 궁금합니다. 그냥 select('#content') 만 하더라도 아무런 값도 안가져와져서 질문을 올려봅니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자

2 답변

  • javascript로 동적렌더링이 되면 렌더링된 html의 selector를 알더라도 못가져오더라구요.

    selector로 가져오지 못한다면 xPath를 이용해보는 것도 방법일 것 같아요. python 사용자이시니깐 beautifulSoup으로만 가져올 수 없는 경우에는 selenium을 사용하시면 jquery식의 $, $$도 사용하실 수 있습니다.

    $$$의 차이는 여기에서 확인하실 수 있습니다 :)

    • (•́ ✖ •̀)
      알 수 없는 사용자
  • 크롬 개발자 콘솔에서 xpath를 확인하실 수 있습니다. 그 xpath로 가져오면 될거 같습니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)