2015-04-06 94 views
0

我用'watir','路边','nokogiri','esay_captcha_solver',我试图刮页,所以我会知道验证码是否已经出现,然后通过获取图像网址来解决问题。然而,我不知道该如何陈述以及如何刮掉我所需要的东西。你如何刮网页,以检查是否需要解决captcha

#=> 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的样子:

captch code

+0

您可以添加要刮的网站的HTML吗? – 2015-04-06 12:55:36

+0

你想整页的HTML? @AlexGolubenko – marriedjane875 2015-04-06 13:23:43

+0

仅用于验证码 – 2015-04-06 13:26:57

回答

0

一号线 - 检查验证码存在或不

2nd - 获取验证码的网址

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 
+0

嘿,谢谢,它读取它,太糟糕了easy_captcha_solver无法读取captchas:\ – marriedjane875 2015-04-06 15:34:01

相关问题