안수찬의 개발이야기

패스트트랙아시아 웹개발 4주차 강의자료

Introduction

안수찬 @dobestan

안수찬 @dobestan

소프트웨어 생태계에 기여할 수 있는 실용주의 프로그래머가 되고자 합니다. 나는 안수찬이다. 그러므로 나는 할 수 있다.


패스트트랙아시아 웹개발 4주차 강의자료

Posted by 안수찬 @dobestan on .
Featured

패스트트랙아시아 웹개발 4주차 강의자료

Posted by 안수찬 @dobestan on .

이 게시물은 소스코드와 그 결과를 보여주기 위해서 jsfiddle에서 제공하는 http iframe을 사용하고 있습니다. 웹 브라우져 주소표시줄 우측의 Load Unsafe Script 버튼을 누르셔야만 확인하실 수 있습니다. 이 부분에 대한 자세한 내용은 HTTPS 페이지에서는 HTTP IFRAME을 사용할 수 없습니다. 에서 확인하실 수 있습니다.

본 강의자료의 일부는 코드라이언에서 제공받아 제작되었습니다. 스터디원들에는 코드라이언 계정 발급해드렸습니다. 본 컨텐츠는 저작권법의 보호를 받는 바, 무단 전제, 복사, 배포 등을 금합니다.

학습목표

  • Ruby 복습하기
  • Gem의 개념을 이해하고 적절하게 사용하기
  • Gmail Gem을 이용하여 간단한 이메일 클라이언트 만들기
  • Nokogiri Gem을 이용하여 파싱 / 크롤링 해보기

수업 내용

루비 실습을 위주로 수업하였습니다. 수업 시간에 진행한 모든 소스코드에 대해서는 Github > dobestan > FastTrackAsia > Ruby on Rails 여기에서 확인하실 수 있습니다. 감사합니다.

Ruby 복습하기 > 1. 역삼각형 출력하기

user$ ruby reverse_star.rb

*****
 ****
  ***
   **
    *

Ruby 복습하기 > 2. Palindrome Checker

user$ palindrome.rb  
Enter a string : Ruby on Rails  
X

user$ palindrome.rb  
Enter a string : RADAR  
O  

Gmail Gem을 이용한 간단한 이메일 클라이언트 만들기

require 'gmail'

print "to : "  
email_to = gets.delete("\n")

print "subject : "  
email_subject = gets.delete("\n")

print "body : "  
email_body = gets.delete("\n")

gmail = Gmail.connect("dobestan.developer@gmail.com","m6JqLNriWFKYgNhoKC2peFpuza")  
puts gmail.logged_in?  
gmail.deliver do  
  to "#{email_to}"
  subject "#{email_subject}"
  text_part do
    body  "#{email_body}"
  end
end

gmail.logout  

다음 실시간 음악차트 파싱하기

require 'nokogiri'  
require 'open-uri'

page = Nokogiri::HTML(open("http://music.daum.net/chart/chartsong/list"))

puts "*"*20  
print "Default Encoding : #{page.encoding}\n"  
puts "*"*20

titles = page.search("a.CT_ZONE_LIST_SONG")  
titles.each do |title|  
  puts "#{title.inner_html}"
end  

Youtube 검색 결과 크롤링

require 'nokogiri'  
require 'open-uri'

print "Youtube Search : "  
user_input = gets.tr(' ', '+')

url = "http://www.youtube.com/results?search_query=#{user_input}"  
page = Nokogiri::HTML(open(url))  
result = "http://youtube.com" + page.css('.yt-lockup')[0].css('.yt-lockup-thumbnail a')[0]["href"]  
`open #{result}`

응용 > Youtube 검색 결과를 이메일로 발송하기

require 'gmail'  
require 'nokogiri'  
require 'open-uri'

print "Youtube Search : "  
user_input = gets.delete!("\n")  
user_input_urlsafe = user_input.tr(' ', '+')

url = "http://www.youtube.com/results?search_query=#{user_input_urlsafe}"  
page = Nokogiri::HTML(open(url))  
result = "http://youtube.com" + page.css('.yt-lockup')[0].css('.yt-lockup-thumbnail a')[0]["href"]

print "Send Email to : "  
email_to = gets.delete!("\n")

gmail = Gmail.connect("dobestan.developer@gmail.com","m6JqLNriWFKYgNhoKC2peFpuzaWsdG")  
# puts gmail.logged_in?
gmail.deliver do  
  to "#{email_to}"
  subject "Youtube Parsing Result of #{user_input}"
  text_part do
    body "#{result}"
  end
end

gmail.logout  

과제

  • (필수) 원하는 사이트 2개를 파싱하고 원하는 정보를 크롤링하기 ( 예시, 네이버 웹툰 댓글, 멜론 실시간 음악 차트 등 )
안수찬 @dobestan

안수찬 @dobestan

https://dobest.io/

소프트웨어 생태계에 기여할 수 있는 실용주의 프로그래머가 되고자 합니다. 나는 안수찬이다. 그러므로 나는 할 수 있다.

View Comments...