【发布时间】:2015-10-16 10:19:25
【问题描述】:
我正在开发一个用 Ruby 编写的应用程序,它使用 selenium 来清除 Yahoo 搜索结果,并从每个结果页面上的每个链接中提取标题描述和 URL。
我的问题是 URL 看起来像这样:
我需要的只是网站的 URL,而不是它的 Yahoo 搜索端。有人告诉我,这可以通过 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 ;
}
除了以下部分之外,我已经能够将其全部转换为 Ruby:
$tr["%".$c[$a].$c[$b]]=chr(($a*16)+$b)
我有点理解这是如何工作的,但我觉得在 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
有什么想法吗?
【问题讨论】:
-
抓取雅虎搜索?确保这不违反他们的条款;)
-
我没有看到任何违反他们条款的事情。
标签: php ruby-on-rails ruby selenium web-scraping