您如何抓取网页以检查是否需要解决验证码问题

How do you scrape a webpage to check if you need to solve for captcha

我正在使用 '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

我希望能够抓取图像 url,我不确定如何让 nogokiri 识别要抓取的 html 代码,然后输入图像 url ..

    else
      browser.goto "http://soundcloud.com/you/sets"
    end

验证码 html 看起来像:

第 1 行 - 检查验证码是否存在

第 2 - 获取 url 的验证码

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