如何更改dom节点输入并使用Mechanize解析相关信息?
我希望该网站能够展示从2010年起生产的一系列卡车,以便我能够解析相关信息。
我想要它做什么:
这是代码:
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>
它没有显示我需要的所有卡车相关信息。
有什么想法吗?
答案 0 :(得分:1)
不幸的是,由于该页面正在使用AJAX更新,因此您将无法轻松使用Mechanize。
与浏览器不同,Mechanize不会在页面上执行任何Javascript,因此在更改输入时不会通过AJAX更新结果。
仍然可以使用Mechanize获取结果,但是您必须手动创建必要参数的请求(使用AJAX发布的请求;您可以使用Developer Tools查看),发布并解析结果页面。