我正在使用' watir',' curb',' nokogiri',' esay_captcha_solver'我试图刮擦页面,以便我知道验证码是否已经出现,然后通过获取图像URL来解决它。但是,我不确定在if语句中放什么以及如何刮掉我需要的东西。
#=> SIGN IN
browser = Watir::Browser.new :ff
browser.goto "https://soundcloud.com/login"
browser.text_field(:id => "site-username").set "#{name}"
browser.text_field(:id => "site-password").set "#{pass}"
browser.button(:id => "log-in-submit-button").click
if browser.body(:url => "https://soundcloud.com/login?captcha=true").text.include? (:id => "recaptcha_table")
http = Curl.get("https://soundcloud.com/login?captcha=true") do |http|
http.headers['User-Agent'] = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10; rv:33.0) Gecko/20100101 Firefox/33.0"
此if语句不起作用,因为它似乎无法读取文本...在浏览器中它只是在有验证码时停止。
end
puts http.form_str
easy_c = EasyCaptchaSolver.new(image_url: "...")
easy_c.captcha
我希望能够抓取图片网址,我不知道如何让nogokiri识别出用于抓取的HTML代码,然后输入图片网址。
else
browser.goto "http://soundcloud.com/you/sets"
end
验证码html看起来像:
答案 0 :(得分:1)
第1行 - 检查验证码是否存在
第二 - 获取验证码的网址
if browser.element(:id => 'recaptcha_image').exists?
img_url = browser.image(:id => 'recaptcha_challenge_image').src
easy_c = EasyCaptchaSolver.new(image_url: "#{img_url}")
easy_c.captcha
end