2016-08-19 20 views
0

Ruby Mechanizeを使用して入力値をフォームに正常に送信し、検索条件に基づいて結果のページを取得できました。結果のページには、ダウンロードする必要のあるahrefリンクとしてのpdfファイルがあります。 HREF属性は値を持っています?検索テキストは、テキストが最初に入力として入力さruby​​ mechanizeを使用したhrefリンクのPDFファイルをダウンロード

HREF = 'xxx.do FILENAME =パス/ abc.pdf &検索テキスト= AAA & ID = 123_4

。私が手動でリンクをクリックすると、http://someip:8080/xxx/temp/123_4という というURLを持つ新しいウィンドウにpdfが開きます。このIDは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ファイルがファイル名(またはURL)として_1/2/3のIDを持つため、動的に生成されるセッションIDです。

私は手動でクリックしてpdfファイルを開いてからハードコードするとファイルがダウンロードされますが、コードが動的にID値を抽出してalinkに割り当てたときは表示されません。これがクッキーに関連しているかどうかは不明です。親切に助けてください。ありがとうございました。

答えて

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

関連する問題