2011-01-20 3 views
1

나는 두 개의 URL이 (구글지도, 뉴스를 가지고 있기 때문에 실제로는 더 많은, 이미지 등) 구글 유기 검색 :루비 정규식은 : 구글의 URL에서 ACLK 제외

http://www.google.nl/#hl=nl&biw=1920&bih=965&q=koffie&aq=f&aqi=g10&aql=&oq=& 
fp=b8a3028139d33c34` 

및 Google 애드워즈 검색 :

http://www.google.nl/aclk?sa=L&ai=CZYun1fI3TY_hO8aMOrer6aQCmK2m2AGIpdyCFr_g_-RVE 
AEoCFDytZmR-_____8BYJGkmoWEGMgBAakCkm-p2E6Ttj6qBBlP0O_GI1GZU09CYDd728FmO_QIDea76u 
yT&num=1&sig=AGiWqtzxvt17KyOWqEkwJ7jVdanxR645tw& 
adurl=http://ad-emea.doubleclick.net/clk%3B233218340%3B57152064%3Bv 

URL에 google을 찾고 aclk? 부분을 제외하려면 정규식이 필요합니다. 이것은 Google Adwords에서만 사용됩니다. 정규 표현식을 사용하여 호스트 리퍼러에서 필터링하고 Google 유기적 트래픽 만 찾습니다.

www[.]google[.].{1,}client=|www[.]google[.].{1,}gs_rfai|www[.]google[.].{1,}& 
prmd|news[.]google[.].{1,}nwshp?| video[.]google|www[.]google[.].{1,} imghp?| 
www[.]google[.].{1,}imgres|www[.]google[.].{1,}search 

트래픽의 50 %를 붙 잡았다 :

는 우선이 정규식을 시도했다. 그 당시에는 애드워즈가 실행되지 않았기 때문에 모든 트래픽을 파악할 수있었습니다. 그러나 그렇지 않았습니다.

Google은 모든 유기적 URL을 포착하고 (aclk?) 애드워즈 URL을 제외하고자합니다.

+0

'.'를 이스케이프하려면'[.]'이 아니라'\ .'을 써야합니다. – Nakilon

+0

좋아, 어떻게 구글 URL에서 aclk를 제외합니까? – Maarten

+0

이것이 좋은 생각입니까? \ .google \. (? : [az] {2,} | co \ .uk | org \ .uk | ac \ .uk | org \ .au | com \ .au | nl | dk | be) (?! aclk) – Maarten

답변

2

URL의 나머지 부분과 도메인 이름을 구분해야하는 경우 URL 구문 분석기 사용을 고려하십시오. 루비의 표준 라이브러리에 하나 있습니다.

이 좋아, 여기에 몇 가지 코드입니다 :

require "uri" 
uri ="http://www.google.nl/aclk?sa=L&ai=CZYun1fI3TY_hO8aMOrer6aQCmK2m2AGIpdyCFr_g_-RVEAEoCFDytZmR-_____8BYJGkmoWEGMgBAakCkm-p2E6Ttj6qBBlP0O_GI1GZU09CYDd728FmO_QIDea76uyT&num=1&sig=AGiWqtzxvt17KyOWqEkwJ7jVdanxR645tw&adurl=http://ad-emea.doubleclick.net/clk%3B233218340%3B57152064%3Bv" 

puts URI.split(uri).inspect 

["http", nil, "www.google.nl", nil, nil, "/aclk", nil, "sa=L&ai=CZYun1fI3TY_hO8aMOrer6aQCmK2m2AGIpdyCFr_g_-RVEAEoCFDytZmR-_____8BYJGkmoWEGMgBAakCkm-p2E 
d728FmO_QIDea76uyT&num=1&sig=AGiWqtzxvt17KyOWqEkwJ7jVdanxR645tw&adurl=http://ad-emea.doubleclick.net/clk%3B233218340%3B57152064%3Bv", nil] 

당신은 아마 (사용 "&는"그들을 분할 긴 문자열에 split를 호출 할 수 있습니다, 그리고 그 일을 분할 당신이 매개 변수를 원한다면 "="를 사용하여 위로). 미안 여기에 너무 정확하지 않으면 나는 당신의 질문을 완전히 이해하지 못했습니다.

URI의 rdoc은 http://www.ruby-doc.org/stdlib/libdoc/uri/rdoc/입니다. 주요 문서를 보려면 "URI"를 클릭하십시오.

+0

코드 샘플에 대한 업 보스가 보상됩니다;) –

+0

@ 라이언 : "보상받는"것이 아니라 "보상받는"것을 의미합니까? :) –

+0

예, 수여 됨 :) –