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,然後向您顯示生成的修改頁面。當您檢查頁面時看到的內容反映了當前正在顯示的頁面,而不是最初收到的內容。 –