Php 解码雅虎搜索结果URL';s

Php 解码雅虎搜索结果URL';s,php,ruby-on-rails,ruby,selenium,web-scraping,Php,Ruby On Rails,Ruby,Selenium,Web Scraping,我正在开发一个用Ruby编写的应用程序,它使用selenium在Yahoo搜索结果中删除,并从每个结果页面的每个链接中提取标题描述和URL 我的问题是我得到的URL是这样的: function translateurl($line) { $c="0123456789abcdef" ; for ($a=0;$a<16;++$a) { for ($b=0;$b<16;++$b) $tr["%".$c[$a].$c[$b]]=chr(($a*16)+$b) ; } $a=explode(

我正在开发一个用Ruby编写的应用程序,它使用selenium在Yahoo搜索结果中删除,并从每个结果页面的每个链接中提取标题描述和URL

我的问题是我得到的URL是这样的:

function translateurl($line) { 
$c="0123456789abcdef" ;
for ($a=0;$a<16;++$a) { for ($b=0;$b<16;++$b)
$tr["%".$c[$a].$c[$b]]=chr(($a*16)+$b) ; }
$a=explode("http",$line) ; $b=explode("/",$a[2]) ; $u="http".$b[0]; 
$url=strtr($u,$tr) ; return $url ; 
}
URI.decode(yahoo_url).match(%r{RU=(.*)/RK}).captures

我需要的只是该网站的URL,而不是雅虎搜索端。我被告知这是可能的,因为PHP使用了如下函数:

function translateurl($line) { 
$c="0123456789abcdef" ;
for ($a=0;$a<16;++$a) { for ($b=0;$b<16;++$b)
$tr["%".$c[$a].$c[$b]]=chr(($a*16)+$b) ; }
$a=explode("http",$line) ; $b=explode("/",$a[2]) ; $u="http".$b[0]; 
$url=strtr($u,$tr) ; return $url ; 
}
URI.decode(yahoo_url).match(%r{RU=(.*)/RK}).captures
我有点理解这是如何工作的,但我觉得在Ruby中使用Selenium应该更容易。目前,我唯一的解决办法就是在一个新标签中打开链接,然后从那里获取URL。但是这样做需要很多时间,而且在不打开链接的情况下转换URL会更容易

我当前的Ruby代码:

def translate_url(url)
       c='0123456789abcdef'
       for a in 0..16
         for b in 0..16
           tr = ['%' + c[a] + c[b]]
           tr((a*16)+b).ord
         end
       end

       a = ('http' + url).split(', ')

       b = ('/' + a[2]).split(', ')

       u = ('http' + b[0])

       return_url = strtr(u,tr)
       return_url
end

有什么想法吗?

可以通过ruby模块对url本身进行解码。更大的挑战是只让正确的部分离开道路。你可以这样做:

function translateurl($line) { 
$c="0123456789abcdef" ;
for ($a=0;$a<16;++$a) { for ($b=0;$b<16;++$b)
$tr["%".$c[$a].$c[$b]]=chr(($a*16)+$b) ; }
$a=explode("http",$line) ; $b=explode("/",$a[2]) ; $u="http".$b[0]; 
$url=strtr($u,$tr) ; return $url ; 
}
URI.decode(yahoo_url).match(%r{RU=(.*)/RK}).captures
这将为您提供匹配内容的列表,因此在您的示例中,
[”http://en.wikipedia.org/wiki/Something“]


但是要注意,只有当你想要的url总是在RU=之后,后面跟着/RK时,这个正则表达式才有效。

scrape yahoo search?当然这不违反他们的条款;)我没有看到任何违反他们条款的事情。这正是我所需要的!谢谢