ruby - Mechanize 表单提交

标签 ruby mechanize irb mechanize-ruby

我有一个网站,我正在尝试使用 Mechanize 抓取该网站。
当我提交表单时,表单将使用以下格式的 URL 提交:
https://www.website.com/Login/Options?returnURL=some_form_options
(如果我在浏览器中输入该 URL,它会将我发送到一个很好的错误页面,说请求的页面不存在)

然而,如果我从网站提交表单,返回的 URL 将采用以下格式:
https://www.website.com/topic/country/list_of_form_options

该网站有一个登录表单,无需填写即可提交搜索查询。

知道为什么我会得到一个不同的 URL,使用 Mechanize 提交相同的表单吗?以及如何反驳?
我无法处理“Mechanize ”表单后得到的 URL。

谢谢!

最佳答案

您可以找到要提交的确切表单然后提交,如果您找不到路径,那么您甚至可以使用 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

关于ruby - Mechanize 表单提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30182161/

相关文章:

ruby-on-rails - 运行heroku open时出现Heroku Config Secret Key Base错误

ruby - 如何将字符串拆分成 block ?

ruby - 尝试使用 Mechanize 设置输入的值

python - 登录 Steam 网站

ruby - irb 不加载我创建的 gem

ruby-on-rails - 如何在 MAC OS 终端中运行 Ruby 程序

ruby-on-rails - ActiveRecord 为 Time of 26 :12 返回 "argument out of range"

python - 从导出按钮中提取 CSV

ruby-on-rails - 启动 irb 或脚本/控制台时未执行 ~/.irbrc

java - 你如何在 Java 中使用 Ruby?