我有一个网站,我试图使用Mechanize。 当我提交表单时,表单将使用以下格式的URL提交: https://www.website.com/Login/Options?returnURL=some_form_options (如果我在浏览器中输入该URL,它会将我发送到一个很好的错误页面,说明所请求的页面不存在)
然而,如果我从网站提交表单,则返回的URL将采用以下格式: https://www.website.com/topic/country/list_of_form_options
该网站有一个登录表单,无需填写即可提交搜索查询。
知道为什么我会使用Mechanize提交不同的URL提交相同的表单?以及如何应对? 我无法处理我得到的网址"机械化"形式。
谢谢!
答案 0 :(得分:0)
您可以找到要提交的确切表单然后提交,如果您无法找到路径,那么您甚至可以使用Mechanize添加表单字段并提交该表单。这是我在我的项目中使用的代码。
我为此任务创建了一个rake任务:
namespace :test_namespace do
task :mytask => [:environment] do
site = "http://www.website.com/search/search.aspx?term=search term"
# prepare user agent
ua = Mechanize.new
page = ua.get("#{site}")
while (true)
page.search("//div[@class='resultsNoBackground']").each do |res|
puts res.at("table").at('tr').at('td').text
link_text =res.at_css('strong').at('a').text
link_href = res.at_css('strong').at('a')['href']
link_href ="http://www.website.com"+link_href
page_content=''
res.css('span').each do |ss|
ss.css('strong').remove
page_content=ss.text.gsub(/Vi.*s\)/, '')
end
# puts "HERE IS THE SUMMMER ......#{content_summery}"
end
if page.search("#ctl00_ContentPlaceHolder1_ctrlResults_gvResults_ctl01_lbNext").count > 0
form = page.forms.first
form.add_field! "__EVENTTARGET", "ctl00$ContentPlaceHolder1$ctrlResults$gvResults$ctl01$lbNext"
form.add_field! "__EVENTARGUMENT", ""
page = form.submit
else
break
end
end
end
end