티스토리 뷰

728x90

「webdriver를 사용해 리로스쿨 중 수행, 대회 부분 내용을 크롤링 해 날짜, 시간, 내용에 맞게 데이터를 분리해 보겠습니다.」


먼저 webdriver를 사용하기 위해서는 https://chromedriver.chromium.org/downloads를 방문하여 자신의 크롬버전에 맞는 Webdriver를 다운로드하여야 합니다. 크롬 버전을 확인하는 방법은 다음 사진과 같습니다.

크롬에서 우측 상단에 있는 버튼을 누른후 설정을 눌러주세요
설정을 누른 후에 Chrome 정보에 들어가 버전을 확인하세요! 저의 경우는 80이네요
그 다음 저 링크를 타고 가서 맞는 버전을 설치해 주세요

- 설치한 압출파일을 풀어 원하는 위치에 놓아주세요 (이 포스팅에서는 C:에 저장된 상태로 진행하겠습니다.)

이 이미지처럼 chromedriver가 성공적으로 설치된 모습입니다.

- 이제 본격적으로 webdriver을 사용할 준비가 끝났습니다. -


코드&코드 설명입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
from selenium import webdriver
from bs4 import BeautifulSoup
 
id = "당신의 리로스쿨 아이디"
password = "당신의 리로스쿨 비밀번호"
data = []
Playlist_f = []
Subject = ""
Number = ""
Teacher = ""
Content = ""
Target = ""
Day = ""
Day_f = []
Target_f = []
Number_f = []
Subject_f = []
Teacher_f = []
Content_f = []
Playlist_f = []
 
driver = webdriver.Chrome('C:\chromedriver.exe')
driver.get('https://songcheon.riroschool.kr/user.php')
delay = 3
driver.implicitly_wait(delay)
 
driver.find_element_by_name('mid').send_keys(id)
driver.find_element_by_name('mpass').send_keys(password)
driver.find_element_by_xpath('//*[@id="main_content"]/form/div/div[5]/a').click()
 
driver.find_element_by_xpath('/html/body/div[4]/div[2]/ul/li[2]/a').click()
 
 
html = driver.page_source
soup = BeautifulSoup(html, 'html.parser')
driver.close()
 
for i in range(2,12):
    Playlist = soup.find_all('tr')[i].get_text()
    Playlist = Playlist.split("\n"5)
    Number = Playlist[1]
    Content = Playlist[2]
    Content = Content.replace("마감 2019년 ","")
    Target = Content[:3]
    Subject = Content[4:6]
    Content = Content.split("- ",1)
    Content = Content[1
    Teacher = Playlist[3]
    Day = Playlist[4]
    
    Content_f.append(Content)
    Subject_f.append(Subject)
    Day_f.append(Day)
    Teacher_f.append(Teacher)
    Target_f.append(Target)
    Playlist_f.append(Playlist)
    Number_f.append(Number)
    
print(Playlist_f)
print(Number_f)
print(Target_f)
print(Subject_f)
print(Teacher_f)
print(Day_f)
print(Content_f)
cs

4~5번 줄 - 말 그대로 사용자의 아이디를 id에 비밀번호를 password의 ''에 입력해 주시면 됩니다.

6~20번 줄 - 데이터를 저장하기 위한 변수들입니다.

22번 줄 - 이번에 하려고 하는 동적 크롤링을 위해 아까 설치했던 ChromeDriver를 이용합니다.

23~29번 줄 - 자동으로 id, password를 입력하고 로그인 버튼을 눌러줍니다.

31번 줄 - 리 로스쿨의 왼쪽에 있는 수행 대회 버튼을 클릭해줍니다.

34~45번 줄 - 해당 페이지(수행 대회)의 html을 가져옵니다.

36번 줄 - webdriver를 종료합니다.

38~49번 줄 - 가져온 내용 중 필요 없는 부분을 지우고 데이터를 알맞게 분류합니다.

51~56번 줄 - 분류한 데이터를 각 리스트에 추가합니다.

58~63번 줄 - 각 리스트를 출력합니다.


각 리스트에 들어갈 값들:

Content_f 대회,수행 이름        ex)독서캠프 활동 보고서
Number_f 순번                     ex)13
Target_f 대회 참여 대상자     ex)전학년, 1학년
Subject_f 과목                     ex)영어, 국어
Day_f 제출 기간              ex)12-26 10:00~ 12-26 23:00
Teacher_f 담당 교사 성함     

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함