티스토리 뷰
728x90
「webdriver를 사용해 리로스쿨 중 수행, 대회 부분 내용을 크롤링 해 날짜, 시간, 내용에 맞게 데이터를 분리해 보겠습니다.」
먼저 webdriver를 사용하기 위해서는 https://chromedriver.chromium.org/downloads를 방문하여 자신의 크롬버전에 맞는 Webdriver를 다운로드하여야 합니다. 크롬 버전을 확인하는 방법은 다음 사진과 같습니다.
- 설치한 압출파일을 풀어 원하는 위치에 놓아주세요 (이 포스팅에서는 C:에 저장된 상태로 진행하겠습니다.)
- 이제 본격적으로 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 | 담당 교사 성함 |
'프로그래밍 > 스크래핑' 카테고리의 다른 글
[Python] 롤 카운터 자동화 (0) | 2021.01.03 |
---|---|
[Python] 주식 정보 자동화 (0) | 2020.10.23 |
[Python] 네이버 영화 평 가져오기&데이터 분류 (0) | 2020.02.19 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 주석
- notion api
- 코드업
- 1253
- pygame
- 타이탄의도구들
- 바닐라 js
- SMTP
- 아나콘다
- 2022.02.05
- Codeup
- 1254
- 도전
- Python
- django
- 1255
- 코드설명
- 크롤링
- promise반환
- localstorage
- 문제풀이
- 1252
- JavaScript
- 사칙연산
- 1251
- Anaconda
- 꿈두레
- 티처블 머신
- 컨트롤타임
- 바닐라 javascript
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함