2023. 4. 27. 22:17ㆍ프로젝트/주간책톡
이제 요약이 있는 링크들을 순회하며 크롤링 할 차례다.
link열의 내용을 하나씩 출력이 되는 것을 확인하고,
book_summary = driver.find_element(By., "book_summary")
class = "book_summary" , id = "bookSummary" .
class 를 기준으로 요소를 찾으면 위의 음성파일을 깨진형태로 받아서
id 값으로 요약문을 지정해 주었다.
위의 기능을 구현한 모듈들을 차례대로 조립하여,
index_length = book_df.shape[0]
book_summary_list = []
for i in range(index_length):
tmep_url = book_df['link'][i]
driver.get(tmep_url)
time.sleep(2)
temp_summary = driver.find_element(By.ID,"bookSummary")
book_summary_list.append(temp_summary.text)
time.sleep(2)
book_df.shape[0] 으로
shape는 튜플 형태로, 첫번째 요소는 데이터프레임의 행의 수, 두번쨰 요소는 열의 수를 나태난다.
그래서 book_df.shape[0] 은 6 (int) 이다.
book_df['link'] 를 하나씩 temp_url 에 넣어 브라우저에 get으로 주어 순회한다.
그리고 브라우저가 이동하면, ID 가 "bookSummary" 인 요소를 temp_summary 에 저장한다.
그것을 booK-summary_list 에 하나씩 저장한다.
요약이 모두 리스트에 잘 담겼다.
이를 book_df 데이터 프레임에 추가해보면
book_df = book_df.assign(book_summary=book_summary_list)
끝에 잘 추가 되었다.
이를 슬랙 봇으로 보내보면
dataframe.at[] 라벨을 기준으로 단일 값에 접근하는데 사용.
.행과 열의 라벨을 인자로 받음
at[row_label(int), column_label(string)]
import requests
import json
def send_slack_message():
bot_url = '슬랙봇주소'
payload = {
"text" : book_df.at[0,"book_summary"]
}
# get, post => CRUD
response = requests.post(
bot_url,
data=json.dumps(payload),
headers={"Content-Type":"application/json"}
)
print(response)
send_slack_message()
봇으로 잘 보내진 모습이다.
원래의 tabulate 를 이용해서 table 코드블록 형식으로 보내면
너무 길어서 형식이 깨진다.
정리
요약 전문이 생각보다 길어 df 에 같이 담아 전송하면 보기 좋지 않고, text 양이 많아 리소스 문제가 될 수도?
-> 일단 요약 전문은 text 형식으로 저장해두고, 기본 형태인
title, author, publisher, publication_date, link, book_nutshell 컬럼 을 유지하여 슬랙봇에 제공한다.
남은 과제는 주마다 올라오는 것을 자동화 크롤링 하는것.
'프로젝트 > 주간책톡' 카테고리의 다른 글
주간책톡(부산 도서관) 크롤링 -6 카카오톡 메세지 크롤링, pygetwindow, pyautogui (2) | 2023.05.01 |
---|---|
주간책톡(부산 도서관) 크롤링 -4 표의 형태를 어떻게 api 로 전송하지?(tabulate, matplotlib) (0) | 2023.04.26 |
주간책톡(부산 도서관) 크롤링 -3 책 정보를 dataframe화 (pandas) (0) | 2023.04.25 |
주간책톡(부산 도서관) 크롤링 -2 XPath, CSS_SELECTOR (0) | 2023.04.24 |
주간책톡(부산 도서관) 크롤링 -1 CSS 선택자 (0) | 2023.04.24 |