【发布时间】:2017-03-21 02:29:15
【问题描述】:
网页中有输入标签。当我检查它时:
<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属性的值更新value。无法使用Nokogiri获取结果值。 -
你无法得到它。您正在检查浏览器所知道的页面的 DOM。 Nokogiri 不是浏览器,它是解析器,这只是浏览器功能的一部分。 Nokogiri 只知道最初检索 HTML 时的样子,就像浏览器第一次检索 HTML 时所做的那样。但随后浏览器会运行页面中嵌入的所有脚本,并处理 CSS,然后将结果修改后的页面显示给您。检查页面时看到的内容反映的是当前显示的页面,而不是最初收到的内容。
标签: html ruby nokogiri html-input