슈퍼왕초보코딩러
19
2021-02-20 08:18:28 작성 2021-02-20 08:19:47 수정됨
4
176

python bs4로 정보 뽑아오는 것 질문드립니당ㅠㅠ


안녕하세요. 새로 가입했습니다. 코딩공부 10일차 코린이입니다ㅠㅠㅠ 매일 독학하다가 처음 질문을 남깁니다ㅠㅠㅠ 도와주시면 감사하겠습니다.


python에서 bs4,requests를 이용해서 유튜브 페이지 하나에서 4가지 정보를 얻고 싶습니다ㅠ

thumbnail = soup.select_one('meta[property="og:image"]')['content']
title = soup.select_one('meta[property="og:title"]')['content']
url = soup.select_one('meta[property="og:url"]')['content']
print(title)
print(thumbnail)
print(url)

이렇게 하니까 제목, 썸네일, url 까지는 잘 뽑아지는데,


조회수가 뭘 어떻게 해도 안됩니다ㅠㅠ


https://www.youtube.com/watch?app=desktop&v=5-iKqhkWIxM
이 유튜브 영상에서 조회수를 뽑아 가고 싶은데


<span class="view-count style-scope yt-view-count-renderer">조회수 222,694회</span>
#count > yt-view-count-renderer > span.view-count.style-scope.yt-view-count-renderer

조회수는 이렇게 나와서


구글링해가면서 몇시간동안 열심히 했는데 ㅠㅠ 도저히 모르겠습니답.

famous = soup('div[class="style-scope ytd-video-primary-info-renderer"]')
famous = soup.select_one('#count > yt-view-count-renderer > span.view-count.style-scope.yt-view-count-renderer')
famous = soup.select_one('span[class="view-count.style-scope.yt-view-count-renderer"]')
famous = soup.find('span',{'class':'view-count style-scope yt-view-count-renderer')
print(famous)


대체 어떻게 해야 될까요ㅠㅠ?

자꾸 none 이뜨거나 값이 안뜨거나, select로 하면 [ ] 이렇게 딕셔너리에 아무 것도 안들어가있습니다ㅠㅠㅠ

0
  • 답변 4

  • 우앵가
    236
    2021-02-20 08:36:21

    저는 업비트에서 비슷하게 bs4로 비트코인 시총규모를 크롤링 해봣는데요. 똑같은 증상이 나타나더라구요. 보안때문인거같아서, 코인마켓캡이란 데서 시총규모를 따오니까 되더라구여. 아마 제생각이지만 보안인거같아요. 다른 댓글 분들도 들어보죠뭐.. 아님 구글링을 좀 더 해보심도..

  • 슈퍼왕초보코딩러
    19
    2021-02-20 09:17:33

    답변감사합니당 ㅠㅠ 보안떄문이었군여 ㅠㅠㅠ조회수 꼭 넣고싶었는데 으엉

    -1
  • 킁킁탐정
    826
    2021-02-20 09:20:00 작성 2021-02-20 09:22:36 수정됨

    웹 페이지에 보여지는 요소는 다양하지만 이 모두가 정적으로 만들어진것이 아니기 때문이  Beautiful Soup같은 도구가 제대로 동작하지 않는 원인이 됩니다.

    1. 문제점

    크롬에서 ctrl+u로 HTML 내용을 열고 ctrl+f로 view-count 단어를 검색해보시면 아무것도 나오지 않는것을 알 수 있습니다. 그래서 Beautiful Soup이 제대로 동작하지 않습니다. 정보가 담긴 태그는 모두 Javascript에서 동적으로 생성된것이라 브라우저가 Javascript를 실행해서 HTML 구조를 추가로 만들어야 원하는 정보가 가 생성됩니다.


    2. 해결법

    Beautiful Soup은 기본적으로 정적 HTML를 위한 도구입니다. 동적으로 만들어진 정보를 얻으려면 Selenium이나 Puppeteer같은 도구를 이용하셔야합니다.


  • 슈퍼왕초보코딩러
    19
    2021-02-20 09:21:54

    아침부터 답변 감사합니다!!!! 그렇군여 아하.. 이해됐습니다 감사합니다!! Selenium을 공부해봐야겠어요!!! 좋은 하루보내세여!!

  • 로그인을 하시면 답변을 등록할 수 있습니다.