2012-07-21 145 views
1

我正尝试使用Ruby和Mechanize从站点http://www.radiojavan.com/mp3s/mp3/Aamin-Sarbaz下载歌曲。有一个'下载MP3',但当我检查它不是链接,但TD。无法点击td元素

agent = Mechanize.new 
agent.pluggable_parser.default = Mechanize::FileSaver 
download_page = agent.get('http://www.radiojavan.com/mp3s/mp3/Aamin-Sarbaz') 

当我在浏览器中导航时,我可以点击它的链接。 但是在代码中这是元素。如何点击这个TD元素?

如果我尝试:

download_page.search('div#download_mp3 table tr td')[1].click.save_as 'proba.mp3' 

它会引发错误: <top (required)>': undefined method点击 '为#(NoMethodError) 从-e:1:load' from -e:1:in'

回答

1

您不能'点击'td,部分原因是因为没有href属性。由于下载是通过javascript处理的,因此您无法通过机械化轻松获取。

1

一个建议我想给的是下载firerbug,然后使用html部分检查td元素,右键单击一个拷贝Xpath,它会给你这样的东西:

/html/body/div[4]/div[2]/div/div[2]/div/table/tbody/tr/td/div/a[2] 

这有望成为你所需要的。

+0

我加了'download_page.search('/ html/body/div [4]/div/div/div/div [2]/div/div/table/tbody/tr/td [3]/div/table /tbody/tr/td[2]').click.save_as'proba.mp3',但它会再次提出相同的消息。我怀疑这可能是JavaScript的问题。 – 2012-07-21 16:18:18

+0

你从哪里得到xpath?这个页面上没有这样的东西。还有那些萤火虫xpaths从来没有正常工作。 – pguardiario 2012-07-22 03:38:02