2012-07-21 163 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