관리 메뉴

솜씨좋은장씨

[Python]Selenium을 사용하여 유튜브 댓글 가져오기 본문

Programming/python

[Python]Selenium을 사용하여 유튜브 댓글 가져오기

사용자 솜씨좋은장씨 2019. 9. 14. 11:26

제가 즐겨보는 Youtube B Man채널에서 제 최애 영화인 어벤져스 엔드게임의 영화 명장면을 정리한 어벤져스 엔드게임 명장면 총정리라는 영상의 댓글 가져오기를 해보았습니다.

1. requests와 BeautifulSoup를 활용하여 시도하기

처음에는 requests와 BeautifulSoup를 사용하여 댓글 가져오기를 시도했습니다.

import requests
from bs4 import BeautifulSoup

url = 'https://www.youtube.com/watch?v=xKf0soeFJtY'
req = requests.get(url)
soup = BeautifulSoup(req.text, 'lxml')

youtube_user = soup.select('div#header-author > a > span')

youtube_comments = soup.select('yt-formatted-string#content-text')

위의 코드로 시도했으나 youtube_user와 youtube_comments를 출력해보면

 

아무것도 받아오지 못한 것을 알 수 있습니다.

 

구글 크롬의 개발자도구를 활용하여 이유를 확인할 수 있었습니다.

 

개발자 도구로 동영상 페이지에서 스크롤 전과 후의 html코드를 확인해보면

 

스크롤 전

스크롤 후

스크롤 전과 후를 보면 스크롤 전에는 별다른 데이터를 가지고 있지않지만 스크롤 후에 동적으로 데이터 값을 가져오는 모습을 보이고 있는 것을 볼 수 있었습니다.

 

이런 경우 우리가 사용할 수 있는 라이브러리는 Selenium입니다.

 

설치는 아래의 링크를 참고하기 바랍니다.

 

[Windows]Windows10에 Selenium설치하기

1. 구글 크롬 최신으로 업데이트하기 먼저 크롬의 맨 우측 상단의 세 개의 점을 클릭하여 크롬의 설정페이지로 들어갑니다. 왼쪽 메뉴에서 Chrome 정보를 클릭하여 업데이트를 실시합니다. 다시시작을 클릭하여..

somjang.tistory.com

 

 

2. Selenium활용하여 다시 시도해보기

from selenium import webdriver as wd
from bs4 import BeautifulSoup
import time

driver = wd.Chrome(executable_path="chromedriver.exe")
url = 'https://www.youtube.com/watch?v=xKf0soeFJtY'
driver.get(url)

last_page_height = driver.execute_script("return document.documentElement.scrollHeight")

while True:
    driver.execute_script("window.scrollTo(0, document.documentElement.scrollHeight);")
    time.sleep(3.0)
    new_page_height = driver.execute_script("return document.documentElement.scrollHeight")
    
    if new_page_height == last_page_height:
        break
    last_page_height = new_page_height
    

html_source = driver.page_source

driver.close()

soup = BeautifulSoup(html_source, 'lxml')

이번엔 Selenium을 활용하여 시도해 보았습니다.

 

앞 서 스크롤을 해주어야 데이터가 로딩되는 것을 보았기에

 

아래의 코드를 사용하여 현재 페이지의 가장 아래까지 스크롤하였습니다.

last_page_height = driver.execute_script("return document.documentElement.scrollHeight")

while True:
    driver.execute_script("window.scrollTo(0, document.documentElement.scrollHeight);")
    time.sleep(3.0)
    new_page_height = driver.execute_script("return document.documentElement.scrollHeight")
    
    if new_page_height == last_page_height:
        break
    last_page_height = new_page_height

코드를 실행하면

자동으로 스크롤 하여 최대한 아래로 내려갑니다.

 

끝까지 내려가도록 코드를 작성하긴 하였지만 네트워크 상태, 개발 환경의 성능에 따라 다를 수 있습니다.

 

아직 위의 코드에는 단순히 time함수로 3초에 한번씩 스크롤을 내리라고만 하고 있기때문에 3초이내에 새로운 댓글이 로딩되지않는다면 끝까지 내려가지 않고 중간에 멈추고 종료되는 것 같습니다.

html_source = driver.page_source

최대한 아래로 내려갔다면 위의 코드로 페이지의 데이터를 받아옵니다.

soup = BeautifulSoup(html_source, 'lxml')

그럼 받아온 데이터를 BeautifulSoup로 파싱해줍니다.

 

이 코드에서는 lxml parser를 사용했습니다.

 

자 그럼 받아온 코드에서 댓글을 단 유저 ID, 댓글을 받아와 보겠습니다.

 

크롬 개발자도구를 활용하여 태그의 id또는 class값을 확인합니다.

댓글 단 유저이름은 id값이 headear-author인 div태그 안에있는 a태그안에 들어있는 것을 확인할 수 있습니다.

댓글은 id값이 content-text인 yt-formatted-string태그 안에 값이 들어있는 것을 확인할 수 있습니다.

 

BeautifulSoup의 select함수를 사용하여 코드로 구현하면 아래와 같습니다.

youtube_user_IDs = soup.select('div#header-author > a > span')

youtube_comments = soup.select('yt-formatted-string#content-text')
str_youtube_userIDs = []
str_youtube_comments = []

for i in range(len(youtube_user_IDs)):
    str_tmp = str(youtube_user_IDs[i].text)
#     print(str_tmp)
    str_tmp = str_tmp.replace('\n', '')
    str_tmp = str_tmp.replace('\t', '')
    str_tmp = str_tmp.replace('                ','')
    str_youtube_userIDs.append(str_tmp)
    
    str_tmp = str(youtube_comments[i].text) 
    str_tmp = str_tmp.replace('\n', '')
    str_tmp = str_tmp.replace('\t', '')
    str_tmp = str_tmp.replace('               ', '')
   
    str_youtube_comments.append(str_tmp)

받아온 데이터에 들어있는 의미없는 값들을 처리해줍니다.

for i in range(len(str_youtube_userIDs)):
    print(str_youtube_userIDs[i], str_youtube_comments[i])

위와 같이 처리된 데이터를 출력하여 제대로 처리가 되었는지 확인해봅니다.

 

잘 처리는 되었으나 가독성의 면에서 떨어지는 것을 볼 수 있습니다.

 

3. 가져온 댓글 Pandas의 DataFrame을 활용하여 가독성 높이기

import pandas as pd

pd_data = {"ID":str_youtube_userIDs, "Comment":str_youtube_comments}

youtube_pd = pd.DataFrame(pd_data)

먼저 str_youtube_userIDs와 str_youtube_comments의 데이터를 가지는 pd_data라는 딕셔너리를 만들어주고

 

pd.DataFrame(pd_data)하여 DataFrame을 만들어줍니다.

 

만들어진 DataFrame을 확인해보면

 

조금은 보기 편해진 것을 볼 수 있습니다.

 

4. 아직 의문으로 남은점

댓글은 2417개로 표시되지만

Selenium을 실행하여 데이터를 가져오면 실행할때마다

40~300개 사이의 계속 다른 개수의 데이터를 받아오는 점이 의문입니다.

 

추측 1

개발 환경의 컴퓨터 성능이나 네트워크 성능에의해 3초 이내에 로딩이 되지 않아 Webdriver가 종료된다.

 

추측 2

 

Webdriver에서 데이터를 받아올 때 까지 기다려주는 함수를 사용하지않아 Webdriver가 다 받아오기 전에 종료된다.

 

의문점은 더 공부해서 해결 후 포스팅 해보려합니다~

 

5. 질문에 대한 답변들

Q. 여러 URL 속의 댓글을 크롤링하고 싶어요!

A. 아래와 같이 크롤링하고 싶은 url들을 리스트에 담은 후 반복문을 통해 실행하면됩니다.

from selenium import webdriver as wd
from bs4 import BeautifulSoup
import time

urls = ['https://www.youtube.com/watch?v=xKf0soeFJtY', 'https://www.youtube.com/watch?v=_SgZ0VqJd3w', 'https://www.youtube.com/watch?v=m17R1LMhp3Q&t=452s', 'https://www.youtube.com/watch?v=C_DQTLCERnM', 'https://www.youtube.com/watch?v=7hD2L89cjWc']

html_sources = []

for i in range(0, 5):
    driver = wd.Chrome(executable_path="./chromedriver")
    driver.get(urls[i])

    last_page_height = driver.execute_script("return document.documentElement.scrollHeight")

    while True:
        driver.execute_script("window.scrollTo(0, document.documentElement.scrollHeight);")
        time.sleep(3.0)
        new_page_height = driver.execute_script("return document.documentElement.scrollHeight")

        if new_page_height == last_page_height:
            break
        last_page_height = new_page_height


    html_source = driver.page_source
    html_sources.append(html_source)
    print("OK")

    driver.quit()

 

 

여러 질문 들에 대한 답변을 반영하여 코드를 수정하여 아래의 GitHub에 올려두었습니다.

추후 명령어로 사용이 가능하도록 패키지화 시켜볼 예정입니다.

잘 사용하셨다면 Star한번씩 눌러주세요~

 

SOMJANG/Youtube_Comment_Crawler

유튜브 댓글 크롤러 ( Python, BeautifulSoup, Selenium ). Contribute to SOMJANG/Youtube_Comment_Crawler development by creating an account on GitHub.

github.com

읽어주셔서 감사합니다.

40 Comments
  • 프로필사진 2020.01.15 18:26 비밀댓글입니다
  • 프로필사진 BlogIcon 사용자 솜씨좋은장씨 2020.01.15 19:05 신고 현재 제 컴퓨터에서 실험해본 결과 잘 돌아가는 것으로 보아 무언가 윈도우에서 새로운 셀레니움 연결을 거부하는 것 같습니다.

    다른 페이지에서 크롤링 도전 시에는 문제가 없는지 궁금합니다~

    저도 찾아보고 알게되면 알려드리겠습니다~
  • 프로필사진 BlogIcon 사용자 솜씨좋은장씨 2020.01.16 00:39 신고 드라이버 버전이나 방화벽 설정을 한번 확인해보는 것도 좋을 것 같습니다

    혹시 해결하시면 무슨 문제였는지 알려주세요!

    공부하는데 참고해주셔서 감사합니다~
  • 프로필사진 황문태 2020.01.29 14:57 혹시 유투브 제목만 따올려면 무엇만 바꿔서 실행시키면 될까요??
  • 프로필사진 BlogIcon 사용자 솜씨좋은장씨 2020.01.29 16:45 신고 안녕하세요. 글을 읽고 질문해주셔서 감사합니다.
    유튜브 제목만 따온다는 것에 대해서 구체적으로 어떤 방법을 원하는 것인지 궁금합니다.

    1. 유튜브에 특정 단어를 검색하고 그에 따라 나오는 유튜브 영상들의 제목들을 가져오고 싶은 것인지

    2. 아니면 특정 영상에 들어갔을 때 그 페이지에서 제목을 가져오고 싶은 것인지 궁금합니다.
  • 프로필사진 BlogIcon 사용자 솜씨좋은장씨 2020.01.29 17:01 신고 1번 같은 경우는 굳이 selenium을 사용하지 않아도 requests 라이브러리를 활용하여 더 쉽게 구현이 가능합니다.

    import requests
    from bs4 import BeautifulSoup
    url = 'https://www.youtube.com/watch?v=xKf0soeFJtY'
    req = requests.get(url)
    soup = BeautifulSoup(req.text, 'lxml')
    title = soup.select("h1 > span")
    title[0].text

    이런식으로 간단하게 구현하고 나오는 값에 대해서 포함되어 있는 \n 과 같은 값은 정규식또는 replace("\n")으로 제거하고 사용하시면 될 것 같습니다! 2번 방법은 필요하시다면 아르바이트 이후에 댓글을 달아보겠습니다!
  • 프로필사진 BlogIcon 사용자 솜씨좋은장씨 2020.01.29 17:18 신고 아 지금 코드는 1번이아니고 2번입니다!
  • 프로필사진 BlogIcon 사용자 솜씨좋은장씨 2020.01.30 15:18 신고 1번은 유튜브에서 우한을 검색하고 나오는 동영상들의 제목만 가져오는 코드를 만들어보았습니다.

    from selenium import webdriver as wd
    from bs4 import BeautifulSoup
    import requests
    import time
    driver = wd.Chrome(executable_path="./chromedriver")
    search_keyword = "우한"

    search_keyword_encode = requests.utils.quote(search_keyword)

    url = 'https://www.youtube.com/results?search_query=' + search_keyword_encode
    driver.get(url)
    last_page_height = driver.execute_script("return document.documentElement.scrollHeight")
    while True:
    # for i in range(3):
    driver.execute_script("window.scrollTo(0, document.documentElement.scrollHeight);")
    time.sleep(3.0)
    new_page_height = driver.execute_script("return document.documentElement.scrollHeight")
    if new_page_height == last_page_height:
    break
    last_page_height = new_page_height
    html_source = driver.page_source
    driver.close()
    soup = BeautifulSoup(html_source, 'lxml')
    soup.text

    titles = soup.select("a#video-title")

    my_titles = []

    for title in titles:
    my_titles.append(title.text.replace("\n"))

    도움이 되셨길 바랍니다!

    감사합니다.
  • 프로필사진 yws 2020.02.13 03:37 dataframe이 나타나지 않는데 뭐가 문제일까요 ㅠㅠ
  • 프로필사진 BlogIcon 사용자 솜씨좋은장씨 2020.02.13 03:44 신고 어디 부분에서 안되는것인지 자세하게 알려주실수 있을까요? 만약 캡쳐로 질문하시고자하신다면 somjang@kakao.com으로 보내주세요!
  • 프로필사진 BlogIcon 사용자 솜씨좋은장씨 2020.02.13 04:26 신고 캡쳐한 화면을 보니 Pycharm을 활용하여 실행하신 것 같습니다. 반복문을 돌면서 크롤링한 내용을 잘 출력해 주는 것을 보아 크롤링은 잘 된 것 같습니다. 만약 youtube_df.to_csv("youtube_crawling.csv", index=False)로 실행한 후 생성된 csv 파일 속에 아무것도 없다면 다시 질문 부탁드립니다!

    제가 코드를 짜고 실행한 환경은 Jupyter Notebook 입니다. Pycharm에서 데이터프레임을 보시고자 하시면 https://tariat.tistory.com/167 이 링크를 참조해 보시면 좋을 것 같습니다.

    블로그에 방문해주셔서 감사합니다!
  • 프로필사진 yws 2020.02.13 04:13 그리고 실례가 안된다면 저 위 코드 그대로 csv로 저장하는 방법 알 수 있을까요??
  • 프로필사진 BlogIcon 사용자 솜씨좋은장씨 2020.02.13 04:15 신고 만들어진 데이터프레임(youtube_df)을가지고

    youtube_df.to_csv(‘저장하고자하는이름.csv’, index= False)

    해주시면됩니다!
  • 프로필사진 yws 2020.02.13 04:26 감사합니다! 메일 보냈습니당
  • 프로필사진 BlogIcon 사용자 솜씨좋은장씨 2020.02.13 04:26 신고 메일 확인하였습니다!
  • 프로필사진 BlueDeveloper 2020.03.23 01:35 올려주신 소스코드 잘 동작하는 것 확인 하였습니다 ^^
    숫자 차이가 나는건 대댓글의 갯수 때문인것 같아요.

    상위에 노출되는 댓글 수가 500개이면, 실제 1차 댓글이 350개 , 2차 대댓글 150개 형태로
    포함된 숫자가 최상단에 노출 되는 것 같습니다.
  • 프로필사진 BlogIcon 사용자 솜씨좋은장씨 2020.03.23 01:37 신고 감사합니다! 혹시 그럼 전체의 데이터를 다 받아오는 방법에 대해서 성공하신방법이 있는지 궁금합니다!
  • 프로필사진 dave 2020.04.16 17:10 안녕하세요 좋은 코드를 알려주셔서 감사합니다.
    혹시 여러 영상의 링크를 한번에 가져와서
    돌릴 수 있는 방법에는 어떤것이 있을까요?
  • 프로필사진 BlogIcon 사용자 솜씨좋은장씨 2020.04.16 17:18 신고 여러 동영상의 url을 가져와서 list에 담아두고 반복문을 실행하면서 가져오면 될 것 같습니다.

    유튜브에서 특정 단어를 검색하면 나오는 영상 목록의 제목을 가져오는 코드는

    https://somjang.tistory.com/45#comment5651249

    이걸 참고해보시면 좋을 것 같습니다.
  • 프로필사진 dave 2020.05.19 16:52 안녕하세요 좋은 글 우선 감사드립니다.

    url을 5개로 해서 클롤링을 하고 싶은데 다음과 같은 코드를 작성해봤는데 댓글창이 스크롤 되지 않고 동영상이 자꾸 넘어갑니다. 혹시 한번 봐주실수 있으실까요?

    last_page_height = driver.execute_script("return document.documentElement.scrollHeight") #마지막 댓글창까지 내리기
    while True:
    for i in range(0,5):
    url2 = url1[i] #url 목록에서 차례로 가져오기
    driver.get(url2)
    time.sleep(1) #로딩시간 1초
    driver.execute_script("window.scrollTo(0, document.documentElement.scrollHeight);")
    time.sleep(3.0) #3초간의 로딩 시간
    new_page_height = driver.execute_script("return document.documentElement.scrollHeight")
    if new_page_height == last_page_height:
    break #중단 #마지막 페이지에 다다르면
    last_page_height = new_page_height
  • 프로필사진 BlogIcon 사용자 솜씨좋은장씨 2020.05.19 18:40 신고 최대한 빨리확인하고 답변드리겠습니다!
  • 프로필사진 dave 2020.05.19 20:22 정말 감사합니다!
  • 프로필사진 BlogIcon 사용자 솜씨좋은장씨 2020.05.19 22:48 신고 밖이라서 코드로는 말씀못드리고 바꿔야하는 부분을 먼저 말씀드리면 url을 바꾸는 반복문을 바깥으로 빼서 해보세요!
    for i in range(0,5)
    url2 = url1[i]
    driver.get(url2)
    이거 다음에 last page ~~~ 방식으로 한번해보세요! 더 자세하게는 집에 들어가면 답변달아보겠습니자
  • 프로필사진 BlogIcon 사용자 솜씨좋은장씨 2020.05.20 18:30 신고 답변은 본문에 적어두었습니다~
  • 프로필사진 dave 2020.05.20 20:00 오오 코드는 잘 작동합니다! 정말 친절하시고 감사합니다 ㅜㅜ

    그런데 두개의 문제가 생겼습니다 ㅜㅜ

    1. Youtube 댓글창 위치가 바뀌어서 영상 밑에 바로 다음 동영상 추천이 뜹니다. 그래서 그런지 스크롤을 하면 댓글창이 넘어가지 않고 다음 동영상 목록이 스크롤이 됩니다 ㅜㅜ
    2. for 문을 이용해서 모두 html_sources.append(html_source)를 한 후,
    BeautifulSoup으로 soup = BeautifulSoup(html_source, 'lxml')을 사용하려고 하는데, 영상 하나하나 적용할 수 있는 방법은 없을까요? 빈 리스트를 생성해서 해봤는데 그것도 안되더라구요 ㅜㅜ

    질문이 너무 많은것 같네요 ㅜㅜ 죄송합니다 ㅜㅜ 혹시 바쁘시지 않으시다면 한 번 봐주시면 정말 감사하겠습니다 !!!!!!!
  • 프로필사진 BlogIcon 사용자 솜씨좋은장씨 2020.05.20 20:28 신고 즐거운 코딩하세요~
  • 프로필사진 BlogIcon 사용자 솜씨좋은장씨 2020.05.26 11:26 신고 https://github.com/SOMJANG/Youtube_Comment_Crawler

    보시고 제가 질문을 잘 이해하고 답변을 드렸는지 알려주세요! 감사합니다!
  • 프로필사진 eunju8343 2020.05.22 18:26 안녕하세요 글 잘 봤습니다. 저도 윗분과 비슷한 문제가 있어서 댓글 남깁니다. URL 여러개로 유튜브 댓글 스크래핑을 하려고 하는데요.. For 문을 돌리면 댓글창이 스크롤링(?)이 안되고 ‘다음 재생목록’이 스크롤링이 되고 스크래핑이 됩니다.. 솜씨좋은장씨님께서 Q&A에 쓰신 코드를 사용해보았습니다.. 도움이 될 만한 팁 부탁드려도 될까요? 미리 감사드립니다.
  • 프로필사진 BlogIcon 사용자 솜씨좋은장씨 2020.05.22 18:37 신고 본문 마지막에 있는 코드를 사용해보셔도 동일한 문제가 나는건가요? 여기나 somjang@kakao.com 으로 좀더 자세하게 질문 주시면 답변드리겠습니다아
  • 프로필사진 BlogIcon 사용자 솜씨좋은장씨 2020.05.26 11:25 신고 메일 답변드렸습니다!
  • 프로필사진 student1 2020.06.25 22:39 안녕하세요 ! 저는 그냥 한 대학생인데 크롤링 관련 여기저기 찾아보다가 이 사이트를 발견했는데 설명도 너무 깔끔하시고 정리도 잘돼있어서 너무 너무 참고하는데 도움이 됐어요 ㅜㅜ 구글링 정말 정말 많이했는데 여러 사이트들 중에 최고에요! 정말 감사드립니다 너무 친절하시네요 ㅜㅜ 행복하세요 ..
  • 프로필사진 BlogIcon 사용자 솜씨좋은장씨 2020.06.27 20:18 신고 더 열심히 적어보겠습니다~ 감사합니다!!
  • 프로필사진 Codes 2020.08.03 17:19 안녕하세요 정말 좋은 글이에요! 감사합니다 ^^

    다름이 아니라 github에서 참고한 코드를 활용해서 크롤링을 하려고 하는데,

    chrome에서 url을 열면 스크롤도 잘 내려가는데,

    댓글은 보이지 않고 화면 오른쪽에 '다음 재생목록'만 쭉쭉 내려가네요 ㅜㅜ

    이렇게 될 경우 댓글 크롤링이 되지 않습니다. ㅜㅜ

    이런 경우는 어떻게 해야할까요?
    혹시 아신다면 답변 정말 감사드립니다 !!
  • 프로필사진 BlogIcon 사용자 솜씨좋은장씨 2020.08.03 23:04 신고 아직 확인해보지는 않았지만 댓글만 읽어봐서는 webdriverwait 을 사용해서 댓글이 로딩될때까지 기다리면 어떨지 궁금합니다. 한번 확인해보고 말씀드리겠습니다~
  • 프로필사진 BlogIcon Codes 2020.08.04 16:23 오 감사합니다! 저도 한번 확인해볼게요!
  • 프로필사진 BlogIcon Codes 2020.08.04 17:15 for i in range(0, len(urls)): #클로링한 url 갯수만큼 반복
    driver = wd.Chrome(executable_path=chrome_path) #chromedriver 사용
    driver.get(urls[i]) # url 열기
    try:
    element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, "#contents")))
    except TimeoutException:
    print('Time Out')

    driver.execute_script("window.scrollTo(0, document.documentElement.scrollHeight);")
    WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, "#contents")))

    last_page_height = driver.execute_script("return document.documentElement.scrollHeight"


    이렇게 작성해봤는데 생각보다 원하는 결과가 나오지 않네요 ㅜㅜ 처음에는 잘 되가도 스크롤이 내려가면 댓글이 다시 안나오네요 ㅜㅜ
  • 프로필사진 good 2020.10.07 17:40 안녕하세요! 덕분에 크롤링 진행에 아주 큰 도움이 되었습니다!

    하지만 포스팅 내용 중 의문점에 명시 된 거 처럼 저 또한 1000개 전체 댓글 데이터를 다 받지 못하고 300~800개의 댓글 데이터만 크롤링이 됩니다.

    혹시 이 의문점이 해결되셨나요?

    해결되셨다면 답변 부탁드리겠습니다.

  • 프로필사진 BlogIcon 사용자 솜씨좋은장씨 2020.10.07 17:43 신고 아직 해당문제에 대해서 이전에

    WebdriverWait를 활용하여 새로운 댓글이 로딩될 때까지 기다렸다가 추출하는 방식으로 시도를 해보다가

    로딩이 될때까지 기다리는 항목을 어떤 항목으로 설정할지 이것저것 해보다가 해결하지 못하고 계속 미뤄두었습니다.

    한번 WebdriverWait를 활용하여 댓글이 새로 로딩이 되면 더 크롤링이 되도록 하는 방법으로 시도해보시면 좋을 것 같습니다!

    감사합니다.
  • 프로필사진 good 2020.10.08 18:15 안녕하세요! 저번 저의 댓글에 답해주셔서 감사합니다!

    이렇게 또 댓글을 남기게 된건

    제가 현재 댓글 작성날짜를 크롤링 하려고 하는데, 정확한 날짜 데이터를 출력하고 싶은데 방법을 잘 모르겠어 이렇게 댓글 남깁니다.

    혹시 6개월전 이렇게 말고 정확한 작성날짜(년,월,일) 데이터를 크롤링하여 출력하는 방법을 알고 계신지요?
  • 프로필사진 BlogIcon 사용자 솜씨좋은장씨 2020.10.08 18:28 신고 HTML 코드 속에 날짜 정보가 포함되어있으면 해당 정보를 가져오는 것을 캡쳐해서 설명드리고자 메일을 보내달라고 말씀드렸는데 막상 지금 코드를 확인해보니 코드 속에 날짜 정보가 없는것을 확인했습니다.

    그래서 떠올린 생각이 datetime의 now를 활용하여 현재의 날짜시간정보를 가져오고 strftime을 활용해서 필요한 날짜와 시간 정보만 남겨둔 뒤에

    크롤링을 해서 가져온 1일전 19시간 전을 -> datetime형식으로 변환하여 현재 시간 - 1일전 이런 방식으로 직접 계산하는 방법을 활용해야 할 것 같습니다.
댓글쓰기 폼