6

recaptcha から localhost ディスクに画像を保存する必要があります。watir-webdriver を使用して画像 dom 要素を取得していますが、watir のように保存方法をサポートしていません。では、どうすれば画像をディスクに保存できますか? HTML:

<div id="recaptcha_image" style="width: 300px; height: 57px;">
  <img style="display:block;" alt="Проверка по слову reCAPTCHA" height="57" width="300" src="https://www.google.com/recaptcha/api/image?c=03AHJ_VusSUxF0IYURRcVTVTjJJnUk92j-hXYsuwqvu0m5tvKFzAnwvrHlz-j_Gfqg-sUrHLj3D2DrUYNNg4uvr2BNgZqlK5vpJUJVYkkWo36I4RRmRGkYZru5kBYhzPCCn49KlH6wW_iLw6vIzv7vnhpu6ndqxb-9SkIRrVYyBwN39kg18Lov7Hc">
</div>

そしてルビーコード:

cap = @browsers[i].div(:id => 'recaptcha_image').image

画像ファイルをディスクに保存するには?

4

3 に答える 3

6
require 'watir-webdriver'    
require 'open-uri'

image_src = @browsers[i].div(:id => 'recaptcha_image').image.src

File.open("/path/", 'wb') do |f|
  f.write open(image_src).read
end
于 2013-01-08T16:48:33.077 に答える
2

Ruby のopen-uriは次のように使用できます。

require 'open-uri'

url = "the image url" #https://www.google.com/recaptcha/api/image?c=03A....

File.open("./image.jpg", "wb") do |file_write|
  open(url, 'rb') do |file_read|
    file_write.write(file_read.read)
  end
end
于 2013-01-08T16:48:23.543 に答える
0
    require 'watir-get-image-content'
    def save_captcha(@browser)      
        img = @browser.image(xpath: '//*[@id="ctl00_captcha"]/td[2]/div[1]/span[1]/img')        
        filename = "#{@path}/tmp/current_captcha.jpg"
        File.open(filename, 'wb'){|file| file.write( img.to_jpg) }          
    end
于 2017-02-04T01:28:08.200 に答える