파이썬(Python)

[ 크롤링-Selenium ] 파이썬 다음 블로그 크롤링(Python Selenium)(2)

카루루1007 2022. 11. 23. 23:19
728x90
반응형
SMALL

지난 포스팅에서 다음 블로그의 제목과 URL을 가지고 오는 방법을 작성했습니다.

지난 포스팅은 여기를 참고하세요

 

오늘은 블로그 게시 날짜를 가지고 오는 방법을 알아보겠습니다.

위 그림에서 빨간색 부분은 블로그의 리스트가 들어있는 부분에 대한 영역입니다.

아래 그림의 파란색 네모 안의 정보를 담고 있는 부분입니다.

 

아래 그림의 빨간색 네모 부분과 파란색 네모 부분을 살펴보겠습니다.

위 그림의 빨간색 부분과 노란색 부분은 아래 그림의 빨간색 부분과 노란색 부분에 해당합니다.

 

반응형

블로그 검색결과에서 날짜는

[ list_info ty_doc ] 클래스 안에 있는 [ area_writer ] 클래스 안의 [ f_nb ]클래스 중

두번째 [ f_nb ]클래스에 해당하는 요소의 텍스트를 추출하면 됩니다.

대략 위 그림과 같은 구조에서 두번째 [ f_nb ]클래스의 요소 내의 텍스트를 추출하면 됩니다.

 

date_datas = driver.find_element(By.CLASS_NAME, "list_info.ty_doc").find_elements(By.CLASS_NAME, "area_writer")

 

먼저 [ list_info ty_doc ]클래스 안에서 모든 [ area_writer ] 요소들을 찾습니다.

for dates in date_datas:
    k = dates.find_elements(By.CLASS_NAME, "f_nb")
    temp_date = k[1].text

[ area_writer ]요소 들 중 하나하나에서 

[ f_nb ]요소를 모두 찾은 후

그 중 두번째 [ f_nb ]클래스의 텍스트를 추출하여

tmep_date 라는 변수에 담아줍니다.

 

해당 코드를 실행하면 다음과 같은 결과가 나옵니다.

 

만약 오늘 게시된 블로그가 있다면,

아마 [ 1분전 ] [ 2시간전 ] 이렇게 나타날 것입니다.

오늘 게시된 블로그는 오늘 날짜로 표시되게 하고,

향후 엑셀파일로 정리하기 위해

날짜를 [ . ]로 구분하는게 아닌 [ - ]로 구분하게 만들어 보겠습니다.

for dates in date_datas:
    k = dates.find_elements(By.CLASS_NAME, "f_nb")
    temp_date = k[1].text

    if len(temp_date)==10:
        j = temp_date.split(".")
        final_date = j[0] + "-" +j[1] + "-" + j[2]
    else:
        final_date = datetime.datetime.now().strftime("%Y-%m-%d")

 

먼저 if 문을 통해 temp_date안의 값이 길이가 10인지 검사해 줍니다.

10이라면 [ 2022.10.11 ]과 같은 형태로 되어 있기 때문에

split() 함수를 통해 [ . ]를 기준으로 나누어 값을 j 라는 변수에 리스트 형태로 넣어줍니다.

그런 후 j 에 담긴 값 하나하나를 [ - ]로 연결하여 final_date에 넣어줍니다.

 

만약 temp_date안에 담긴 값을 길이가 10이 아니라면

[ 1분전 ] [ 2시간전 ]과 같이 오늘 게시된 블로그일 것이므로

final_date = datetime.datetime.now().strftime("%Y-%m-%d")

final_date 값으로 오늘 날짜를 strftime() 함수를 사용해 yyyy-mm-dd 형태로

넣어 줍니다.

위 코드를 실행하기 위해서는 [ import datetime ]을 해주어야 합니다.

 

이제 print(final_date) 를 실행하면 

블로그가 게시된 날짜까지 불러올 수 있습니다.

 

다음에는 모든 페이지의 블로그 제목과 URL, 게시일자를 가지고 오는 방법을

포스팅해보도록하겠습니다.

728x90
반응형
LIST