使用Ruby Mechanize我已成功将输入值提交给表单,并且能够根据搜索条件获取结果页面。结果页面有pdf文件作为我需要下载的ahref链接。 属性href具有值:
href =' xxx.do?FILENAME = path / abc.pdf& SEARCHTEXT = aaa& ID = 123_4
其中SEARCHTEXT是最初作为输入输入的文本。当我手动点击链接时,pdf会在新窗口中打开 url为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是动态生成的会话ID,因为结果页面上的所有pdf文件都具有此ID,其中_1 / 2/3为文件名(或url)。
请注意,每当我手动点击并打开一个pdf文件,然后在我的代码中硬核那个文件下载,但是当我的代码动态提取ID值并分配到alink时不会。不确定这是否与cookie有关。请帮助。谢谢。
答案 0 :(得分:0)
确保它是正确的绝对网址:
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}