Light Tutorial Django
Studybee 3주차 - 가볍게 배우는 장고!!
Django를 이용해 블로그를 만들기 전에 가볍게 Django에 대해 알아보고 익숙해져 봅시다.
**http://www.studybee.kr 에서 운영하는 '초심자를 위한 웹개발' 클래스에서 만드는 교재이며,
장고를 이용해 간단하게 블로그를 만드는 것을 목표로 하고 있습니다.
DesktopApplication 개발을 위한 Electron에 대해서 간단하게 공부를 해 보았습니다. 그중에서도 핵심부분인 Main Process에 대해서 간단하게 추려서 AngularJS2 & Electron 스터디 모임에서 발표한 내용을 업로드합니다. 몇몇 API만 추려서 설명하기 때문에 나머지 부분들은 공식 문서를 통해서 부족한 부분들을 채우시면 될 것 같습니다.
Light Tutorial Django
Studybee 3주차 - 가볍게 배우는 장고!!
Django를 이용해 블로그를 만들기 전에 가볍게 Django에 대해 알아보고 익숙해져 봅시다.
**http://www.studybee.kr 에서 운영하는 '초심자를 위한 웹개발' 클래스에서 만드는 교재이며,
장고를 이용해 간단하게 블로그를 만드는 것을 목표로 하고 있습니다.
DesktopApplication 개발을 위한 Electron에 대해서 간단하게 공부를 해 보았습니다. 그중에서도 핵심부분인 Main Process에 대해서 간단하게 추려서 AngularJS2 & Electron 스터디 모임에서 발표한 내용을 업로드합니다. 몇몇 API만 추려서 설명하기 때문에 나머지 부분들은 공식 문서를 통해서 부족한 부분들을 채우시면 될 것 같습니다.
RNNs are neural networks that can handle sequence data by incorporating a time component. They learn from past sequence data to predict future states in new sequence data. The document discusses RNN architecture, which includes an input layer, hidden layer, and output layer. The hidden layer receives input from the current time step and previous hidden state. Backpropagation Through Time is used to train RNNs by propagating error terms back in time. The document provides an example implementation of an RNN for time series prediction using TensorFlow and Keras.
RNNs are neural networks that can handle sequence data by incorporating a time component. They learn from past sequence data to predict future states in new sequence data. The document discusses RNN architecture, which uses a hidden layer that receives both the current input and the previous hidden state. It also covers backpropagation through time (BPTT) for training RNNs on sequence data. Examples are provided to implement an RNN from scratch using TensorFlow and Keras to predict a noisy sine wave time series.
4. 연습 1단계 : Let’s using Selenium!
이 사이트에 접속하면,
처음에는
이렇게 보임.
그리고 2초 후,
이렇게 보임.
* 이런 상황에서…
그냥 크롤링을 하면, 1번 html만 가져오게 됨.
그러나 javascript가 실행된 후의 진짜 본문인,
2번 html은 가져오지 못함.
1
2
5. 연습 1단계 : Let’s using Selenium!
결과출력소스
driver = webdriver.PhantomJS()
먼저 이렇게 하는 이유는, PhantomJS와 Selenium을 연결시키는 겁니다.
driver.get("http://pythonscraping.com/pages/javascript/ajaxDemo.html")
그리고 나서, 이렇게 특정 URL을 접속합니다.
접속을 했으니, 이제는 이 사이트에서 하고 싶은 것을 하면 됩니다.
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "loadedButton")))
이것은, javascript가 실행완료될 때까지 기다리다가 10초가 지나도록 결과가 오지 않으면,
예외처리를 하고 출력할 것입니다.
만약 실행이 10초이내로 잘 된다면,
element에 결과를 저장하고 출력하게 합니다.
이 예제는, “loadedButton" 이라는 요소가
javascript의 실행 후, 나타날때 까지 기다렸다가
나타나면, 그때의 html을 기준으로 텍스트를 가져오는 것
을 연습합니다.
6. 연습 2단계 : redirect 페이지도 크롤링하기
이 사이트에 접속하면,
이 사이트로 자동 이동함.
* 이런 상황에서도…
그냥 크롤링을 하면, 1번 html만 가져오게 됨.
그러나 javascript가 실행된 후의 진짜 본문인,
2번 html은 가져오지 못함.
2초후
1
2
7. 연습 2단계 : redirect 페이지도 크롤링하기
결과출력소스
여기서도,
driver = webdriver.PhantomJS()
이렇게 driver 객체를 만든 후,
애쓰고 만드신 waitForLoad 함수에 넣습니다.
그러면,
원하는 결과인 “redirect후의 페이지”를 크롤링 하실 수 있습니다.
waitForLoad 함수는,
PhantomJS에 있는 html을 selenium으로 찾아서,
넣도록 만들어진 함수 입니다.