자주 사용하는 메소드

제가 지금까지 대상으로 따지면, 대충 20개 페이지 정도 크롤링 작업을 거쳤습니다. 그 중에서는 미흡반 부분도 많죠. 모든 페이지의 구조가 다르고 때로는 비슷한 구조도 보입니다. 하지만 제가 Ruby로 작업을 하다보니, 자주 사용하는 틀과 메소드들이 있어서 한 번 리뷰할 겸 적어보려고 합니다.

Nokogiri Parse

data = Nokogiri::HTML(open(url))
#url을 Nokogiri API를 이용하여 <HTML> 기준 파싱 작업을 합니다.

Ruby For

(0..6).each do |i| end
 #특정 리스트 혹은 배열에서 index 0~6을 순서대로 접근합니다. i에 0~6이 차례대로 들어갑니다.

target.each do |t| end
#Iterator 패턴이라고 생각하시면 됩니다. C#의 Foreach 구문이라고 보셔도 됩니다.
#target이라는 리스트 객체를 순서대로 모두 접근합니다. 그 인자는 t로 순서대로 접근합니다.
#응용 버전
 tbody.css('tr').each do |tr|
    tr.css('td').each do |td|
    end
 end
#이런식으로 each 안에 each를 두어 사용하기도 합니다.

nil? Null? empty?

some.nil?
#이것은 irb에서 테스트해봤을 때, nil이 나오는 경우를 걸러냅니다.
some.empty?
#이것은 리스트 객체가 비어있는 경우를 의미합니다.
#위 두 가지를 헤깔리지 마시기 바랍니다. 하다보면, 익숙해질 겁니다.

" "(not a space)

#위에 쓴 문자가 뭔지 궁금하십니까? 저 문자는 빈칸(Space)일까요? 결론부터 말씀드리자면 아닙니다.
#가끔 컴퓨터 환경에 따라서 Tab이 다르게 표현될 경우가 있고 빈칸도 크기가 다릅니다.
#그러므로 빈칸으로 보이는 것도 제대로 코딩했는데 안되면, irb에서 결과물로 나온 것을 복사 붙여넣기 해서 사용해보시길.

숫자 판별

some.scan(/\d/).join('') 그리고 (something =~ /\A\d+\z/)
#위 메소드는 특정 텍스트(some)에서 숫자만 추출하는 방법입니다. 각각의 기능을 살펴보면, 결과적으로 숫자만 추출합니다.
#그래서 이 방법으로 텍스트 안에 숫자가 포함되어 있는지 등을 판별하거나 숫자가 한 곳에만 있다면 그 숫자를 추출할 수도 있습니다.
#something 부터는 숫자로만 이루어져있는지를 판별하는 방법입니다.

if elsif else end next break

#경우의 수가 많고, 불규칙할 경우가 있기 때문에 더러워 지더라도 조건문을 사용하는 경우가 생깁니다.
#물론 객체지향적으로 잘 설계한다면, 코드가 많아져도 깔끔한 코드를 유인할 수는 있습니다.
#Ruby에서 조건문의 위처럼 사용합니다. end를 습관화 들이시기 바랍니다.
#next는 continue를 의미하고, break는 break입니다.

+=

#보통 i++같은 걸 많이 사용합니다. 하지만 Ruby에서는 for(int i=0;i<10;i++) 같은 형태로 사용하지 않습니다.
#i += 1 형태로 사용하는 것을 기억해두시기 바랍니다.

Json

require 'json'
JSON.generate({:some1 => "", :some2 => ""})
#require 'json' 이라고 해야합니다.
#JSON.generate({:some1 => "", :some2 => ""}) 형태로 만듭니다.

Array

@something = Array.new
@something << array_plus
#@something = Array.new 형태로 우선 배열을 하나 만듭니다.
#@something << array_plus 형태로 배열을 하나씩 늘려갑니다.
#이름은 배열이지만 리스트일 수도 있고 다른 형태일 수도 있습니다. 응용 가능합니다.

String 교체

something.gsub("교체하고 싶은 부분","교체할 문자")
#위처럼 사용되며, ''로도 가능하지만 상황에 따라 다르니 해보시기 바랍니다.

Split Method

something.split(">")
#'>'라는 문자를 기준으로 나뉩니다. 이 것은 배열에 순서대로 저장됩니다.
something.split(">")[0]
#위 처럼 나눈 후에 첫 번째 값을 의미합니다.

Switch

#Ruby에서는 case와 when 형태로 사용합니다.
#case @from when /daum/ when /naver/ else end
#위와같은 형태로 사용합니다.

Model.delete_all

#위 문법은 해당 모델 테이블에 있는 모든 튜플을 리셋합니다.

results matching ""

    No results matching ""