我有两个网址(实际上更多是因为Google有地图,新闻,图片等) Google自然搜索:
http://www.google.nl/#hl=nl&biw=1920&bih=965&q=koffie&aq=f&aqi=g10&aql=&oq=&
fp=b8a3028139d33c34`
和Google Adwords搜索:
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
我需要正则表达式才能在网址中找到google
并排除aclk?
部分。这仅适用于Google Adwords。正则表达式将用于从主机引荐来源过滤,并仅查找Google Organic流量。
首先我尝试了这个正则表达式:
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%的流量。当时我们没有运行Adwords,所以它可以捕获所有流量。但它没有。
我们希望抓住所有Google(有机)网址并排除Adwords网址(使用粉笔?)。
答案 0 :(得分:2)
如果您需要将域名与URL的其余部分分开,请考虑使用URL解析器。 Ruby的标准库中有一个。
好的,这是一些代码:
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”以查看主要文档。