0

我正在尝试使用 Ruby从uptobox.com下载我自己的文件。但是当验证码显示时我被卡住了(这只是span用一些 Javascript 生成的 html-tag 中的随机数)。我认为下载计时器也可能存在一些问题。在第 3 页上它说"wrong captcha"

require 'rubygems'
require 'mechanize'

agent = Mechanize.new
page1 = agent.get("http://uptobox.com/pzlw7p8d651h")
form_page1 = page1.forms.first

page2 = form_page1.submit(form_page1.button_with(:name => "method_free"))
form_page2 = page2.form_with(:name => "F1")
captcha = page2.parser.search("td[@align='right']/div").inner_text
form_page2.field_with(:name => "code").value = captcha

p form_page2

// 60s has to pass before the button is enabled. the prog waits 70s
timeToWait = (page2.parser.search("*[id='countdown_str']/span").text).to_i + 10
p Time.now.getutc
sleep(timeToWait)  
p Time.now.getutc

button = form_page2.button_with(:value => "Create Download Link")
page3 = agent.submit(form_page2,button)

p page3.content  

我究竟做错了什么?

4

1 回答 1

0

如果您使用验证码,您的验证码将始终不正确...search("td[@align='right']/div").inner_text。因为页面用于padding-left更改验证码中的字符序列。

为了让它正确,您需要padding-left按升序提取 的值,然后使用实际的 inner_text。

例如

<span style="position:absolute;padding-left:28px;padding-top:4px;">4</span> #=> 2nd
<span style="position:absolute;padding-left:9px;padding-top:7px;">3</span> #=> 1st
<span style="position:absolute;padding-left:44px;padding-top:6px;">9</span> #=> 3rd
<span style="position:absolute;padding-left:62px;padding-top:3px;">7</span> #=> 4th
于 2013-09-16T17:32:03.657 回答