Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何使用Mechanize更改dom节点输入并解析相关信息?_Ruby_Mechanize - Fatal编程技术网

Ruby 如何使用Mechanize更改dom节点输入并解析相关信息?

Ruby 如何使用Mechanize更改dom节点输入并解析相关信息?,ruby,mechanize,Ruby,Mechanize,如何使用Mechanize更改dom节点输入并解析相关信息 我希望该网站显示从2010年起生产的一系列卡车,以便我可以解析相关信息 我希望它做什么: 拜访 将“入学年份”(低制造年份)设置为2010年和2014年() 收集列出的所有卡车(以及2010年至2014年间生产的卡车)的相关信息 代码如下: require "mechanize" @url = "https://www.kleyntrucks.nl/vrachtwagens/trekker/" a = Mechanize.new d

如何使用Mechanize更改dom节点输入并解析相关信息

我希望该网站显示从2010年起生产的一系列卡车,以便我可以解析相关信息

我希望它做什么:

  • 拜访
  • 将“入学年份”(低制造年份)设置为2010年和2014年()
  • 收集列出的所有卡车(以及2010年至2014年间生产的卡车)的相关信息
  • 代码如下:

    require "mechanize"
    
    @url = "https://www.kleyntrucks.nl/vrachtwagens/trekker/"
    
    a = Mechanize.new do |agent|
      agent.user_agent_alias = 'Mac Safari'
      agent.follow_meta_refresh = true
    end
    
    a.get(@url) do |page|
    
            # Put range input to "2010"
        bouwjaar_range_field = page.search("#imprp0")
        bouwjaar_range_details = bouwjaar_range_field.search(".details")
        input = bouwjaar_range_details.search("input")[0]
        input['value'] = "2010"
    
        puts bouwjaar_range_field
    
    end
    
    这是输出:

    <li id="imprp0" class="">
        <a name="bouwjaar"></a>
        <div class="title">Bouwjaar</div>
        <div class="details">
    
                        <input type="hidden" name="slider_from" value="2010"><input type="hidden" name="slider_till" value="2014"><input type="hidden" name="slider_selected_from" value="0"><input type="hidden" name="slider_selected_till" value="0"><input type="hidden" name="slider_units" value="">
    </div>
    </li>
    
  • 布贾尔
  • 它没有显示我需要的所有与卡车相关的信息


    有什么想法吗

    不幸的是,您无法轻松地使用Mechanize,因为页面正在使用AJAX更新

    与浏览器不同,Mechanize不会在页面上执行任何Javascript,因此在更改输入时不会通过AJAX更新结果

    仍然可以使用Mechanize获取结果,但是您必须手动使用必要的参数(使用AJAX发布的请求;您可以使用开发人员工具查看)、发布和解析结果页面来创建请求