我有一个我试图使用机械化的网站。当我提交表格时,表格将以以下格式提交:https://www.website.com/login/options?returnurl = some_form_options(如果我在浏览器中输入该URL,它会将我发送到一个不错的错误页面,说不存在请求的页面)
,尽管我从网站提交表格,但返回的URL将具有以下格式:https://www.website.com/topic/country/list_of_form_options
该网站的登录表格没有必要填写以提交搜索查询。
任何想法,为什么我会得到不同的URL,以机械化提交相同的形式?以及如何对抗?我无法处理"机械化"表格后得到的URL。
谢谢!
您可以找到要提交的确切表格,然后提交,如果您无法找到路径,那么即使您也可以使用机械化添加表单字段并提交该表单。这是我在项目中使用的代码。
我已经为此任务创建了一个耙子任务:
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