0
网页中有一个输入标签。当我检查它:输入值如何工作?
<input type="text" onmouseover="this.select();" readonly="" value="<embed src="https://imgcache.qq.com/tencentvideo_v1/playerv3/TPout.swf?max_age=86400&v=20161117&vid=d0380tpvuqx&auto=0" allowFullScreen="true" quality="high" width="480" height="400" align="middle" allowScriptAccess="always" type="application/x-shockwave-flash"></embed>">
但当我查看其页面源:
<input type="text" onmouseover="this.select();" readonly r-attr="{value:shareHtml}">
它是如何工作的?我如何通过nokogiri
获取输入值,因为解析的结果是这样的:
#<Nokogiri::XML::Element:0x3fcc71309c60 name="input" attributes=[#<Nokogiri::XML::Attr:0x3fcc71309be8 name="type" value="text">, #<Nokogiri::XML::Attr:0x3fcc71309bd4 name="onmouseover" value="this.select();">, #<Nokogiri::XML::Attr:0x3fcc71309bc0 name="readonly" value="readonly">, #<Nokogiri::XML::Attr:0x3fcc71309bac name="r-attr" value="{value:shareHtml}">]>
它看起来像是有JavaScript的更新'价值'基于'r-attr'属性的值。用'Nokogiri'没有办法得到结果值。 – mudasobwa
你不明白。当浏览器知道它时,您正在检查页面的DOM。 Nokogiri不是浏览器,它是一个解析器,它只是浏览器的一部分。所有Nokogiri知道的是HTML最初被检索时的样子,就像浏览器首次检索HTML时一样。但是,然后浏览器运行嵌入在页面中的所有脚本,并处理CSS,然后向您显示生成的修改页面。当您检查页面时看到的内容反映了当前正在显示的页面,而不是最初收到的内容。 –