2016-08-19 78 views
0

使用Ruby機械化我已成功提交輸入值的形式和我能夠根據搜索條件,以獲得最終頁面HREF鏈接。由此產生的頁面有PDF文件作爲我需要下載的ahref鏈接。 屬性HREF具有值:下載PDF文件是使用紅寶石機械化

HREF ='xxx.do FILENAME =路徑/ abc.pdf & SEARCHTEXT = AAA & ID = 123_4

其中SEARCHTEXT是輸入的文本作爲輸入最初?。當我手動點擊鏈接pdf時,在 網址爲http://someip:8080/xxx/temp/123_4的新窗口中打開,這是在href屬性中看到的相同ID。但實際的文件名不同,格式爲xxx.123_2_.doc。我下面的代碼返回0字節的文件 -

scraper.pluggable_parser.pdf = Mechanize::FileSaver 
File.open('n1pdf.pdf', 'wb'){|f| f << scraper.get(alink).body} 

其中ALINK = http://someip:8080/xxx/temp/123_4 如果我使用

File.open("new.pdf", "w") do |f| 
    uri = URI(alink) 
    f << Net::HTTP.get(uri) 
    end 

我得到HTTP未找到錯誤。 我不知道如果我這樣做是正確的。是ID處理動態生成的,因爲所得到的頁面上的所有的PDF文件具有該ID與_1/2/3作爲文件名(或URL)的會話ID。

請注意,每當我手動點擊並打開一個PDF文件,然後鐵桿,在我的代碼的文件下載,但沒有當我的代碼中動態提取ID值,並分配給ALINK。不確定這是否與Cookie相關。請幫助。謝謝。

回答

0

確保它是正確的絕對URL:

uri = scraper.page.uri.merge(a[:href]) 
puts uri # just check to be sure 
File.open('n1pdf.pdf', 'wb'){|f| f << scraper.get(uri).body} 
+0

謝謝。有用 – user6733460