주간책톡(부산 도서관) 크롤링 -3 책 정보를 dataframe화 (pandas)
2023. 4. 25. 21:19ㆍ프로젝트/주간책톡
temp_book_titles = driver.find_elements(By.CSS_SELECTOR, "h3:not([class]) > a")
book_titles_list = []
for title in temp_book_titles:
book_titles_list.append(title.text)
print(book_titles_list)
book_link_list = []
for summary in temp_book_titles:
book_link_list.append(summary.get_attribute('href'))
print(book_link_list)
selenium.webdriver.remote.webelement.WebElement 타입들을 str 타입으로 정리해준다.
(원래 발생했던 오류가 웹요소 객체 타입이라서 str 정리가 안되는 요소가 있었다. 오류가 발생한 뒤 스키마 구성을 바꾼것)
temp_book_infos = driver.find_elements(By.CSS_SELECTOR, "td:not([class]) > font")
book_infos_list = []
for book_info in temp_book_infos:
book_infos_list.append(book_info.text)
book_author_list = book_infos_list[0::4]
book_publisher_list = book_infos_list[1::4]
book_publication_date_list = book_infos_list[2::4]
book_nutshell_list = book_infos_list[3::4]
저자, 출판사, 출간일, 한줄요약 도 마찬가지로 리스트형태로 정리한다.
하나의 리스트로 관리하기 위해서
book_data = []
for i in range(6):
temp = []
temp.append(book_titles_list[i])
temp.append(book_author_list[i])
temp.append(book_publisher_list[i])
temp.append(book_publication_date_list[i])
temp.append(book_link_list[i])
temp.append(book_nutshell_list[i])
book_data.append(temp)
import pandas as pd
columns = ['title','author','publisher','publication_date','link','book_nutshell']
books_df = pd.DataFrame(book_data, columns=columns)
book_data = [[title1,author1,...], [title2, author2,...],...]
리스트 안의 리스트로 이런식으로 구성해준다.
물론
booK_data = {
"title": book_titles_list,
"author": book_author_list,
"publisher": book_publisher_list,
"publication_date": book_publication_date_list,
"link" : book_link_list,
"book_nutshell" : book_nutshell_list
}
book_df = pd.DataFrame(booK_data)
이렇게 바로 DF 형태로 만들어도 된다.
정보가 깔끔히 Dataframe 형태로 정리되었다.
books_df.describe()
발행일 유니크값이 4인것을 보아 저쪽에 중복값이 있나 확인해보면 년,월 까지만 따져서 중복일이 많이 겹칠수도 있다는 생각이 든다.
(describe() 로 한번 데이터 개략을 보는것이 좋은 습관이라고 생각한다.)
728x90
'프로젝트 > 주간책톡' 카테고리의 다른 글
주간책톡(부산 도서관) 크롤링 -6 카카오톡 메세지 크롤링, pygetwindow, pyautogui (2) | 2023.05.01 |
---|---|
주간책톡(부산 도서관) 크롤링 -5 페이지를 순회하며 크롤링 (0) | 2023.04.27 |
주간책톡(부산 도서관) 크롤링 -4 표의 형태를 어떻게 api 로 전송하지?(tabulate, matplotlib) (0) | 2023.04.26 |
주간책톡(부산 도서관) 크롤링 -2 XPath, CSS_SELECTOR (0) | 2023.04.24 |
주간책톡(부산 도서관) 크롤링 -1 CSS 선택자 (0) | 2023.04.24 |