整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          HTML基礎(chǔ)教程:腳本

          TML 腳本

          HTML script 元素

          <script> 標(biāo)簽用于定義客戶端腳本,比如 JavaScript。

          script 元素既可包含腳本語(yǔ)句,也可通過(guò) src 屬性指向外部腳本文件。

          必需的 type 屬性規(guī)定腳本的 MIME 類型。

          JavaScript 最常用于圖片操作、表單驗(yàn)證以及內(nèi)容動(dòng)態(tài)更新。

          下面的腳本會(huì)向?yàn)g覽器輸出“Hello World!”:

          <script type="text/javascript">
          document.write("Hello 天華信息教育!")
          </script>
          

          <noscript> 標(biāo)簽

          <noscript> 標(biāo)簽提供無(wú)法使用腳本時(shí)的替代內(nèi)容,比方在瀏覽器禁用腳本時(shí),或?yàn)g覽器不支持客戶端腳本時(shí)。

          noscript 元素可包含普通 HTML 頁(yè)面的 body 元素中能夠找到的所有元素。

          只有在瀏覽器不支持腳本或者禁用腳本時(shí),才會(huì)顯示 noscript 元素中的內(nèi)容:

          <script type="text/javascript">
          document.write("Hello 天華信息教育!")
          </script>
          <noscript>Your browser does not support JavaScript!</noscript>
          

          實(shí)例

          插入一段腳本

          如何將腳本插入 HTML 文檔。

          <html>
          <body>
          <script type="text/javascript" >
          document.write("<h1>Hello 天華信息教育!</h1>")
          </script> 
          </body>
          </html>
          

          HTML基礎(chǔ)教程:腳本

          使用 <noscript> 標(biāo)簽

          如何應(yīng)對(duì)不支持腳本或禁用腳本的瀏覽器。

          <html>
          <body>
          <script type="text/javascript">
          document.write("Hello 天華信息教育!")
          </script>
          <noscript>Sorry, your browser does not support JavaScript!</noscript>
          <p>不支持 JavaScript 的瀏覽器將顯示 noscript 元素中的文本。</p> 
          </body>
          </html>
          

          HTML基礎(chǔ)教程:腳本

          希望以上可以解決你們心中的一些疑惑,其中可能會(huì)有不對(duì)的地方或是需要改進(jìn)的地方,歡迎留言糾正。感覺(jué)還不錯(cuò)歡迎關(guān)注收藏轉(zhuǎn)載哦

          載腳本長(zhǎng)期以來(lái)一直是互聯(lián)網(wǎng)可用性的重要組成部分。一般都是在服務(wù)端來(lái)實(shí)現(xiàn)的居多,隨著技術(shù)的發(fā)展,前后端分離技術(shù)的興起,以前很多后端的事也更多讓前端來(lái)實(shí)現(xiàn),我開(kāi)始尋找一種無(wú)需服務(wù)器就可以強(qiáng)制下載的方法,經(jīng)過(guò)一番努力,終于我找到了它,就在Firefox Devols Debugger中,有興趣的朋友可以自己去試一下!

          后端的活我也能干了

          廢話不多說(shuō),直接上腳本。

          1、javascript腳本

          function downloadFile(data, fileName, type="text/plain") {
           // 創(chuàng)建不可見(jiàn)的元素
           const a = document.createElement("a");
           a.style.display = "none";
           document.body.appendChild(a);
           // 將href設(shè)置為要下載數(shù)據(jù)的blob表示形式
           a.href = window.URL.createObjectURL(
           new Blob([data], { type })
           );
           // 使用下載屬性設(shè)置所需的文件名
           a.setAttribute("download", fileName);
           // 通過(guò)模擬點(diǎn)擊觸發(fā)下載
           a.click();
           // 清理
           window.URL.revokeObjectURL(a.href);
           document.body.removeChild(a);
          }
          

          2、html元素

          <form onsubmit="onFormSubmit(); return false;">
          		<p>
          			<label for="demo_filename">文件名稱:</label><br>
          			<input type="text" id="demo_filename">
          		</p>
          		<p>
          			<label for="demo_content">內(nèi)容:</label><br>
          			<textarea id="demo_content"></textarea>
          		</p>
          		<button type="submit">下載</button>
          	</form>
          

          3、運(yùn)行效果

          是不是很簡(jiǎn)單,這樣做的函數(shù)非常小,并且依賴于URL.createObjectUrl,函數(shù)注入<a>元素,將其設(shè)置為Blob值設(shè)置為目標(biāo)文件的文本內(nèi)容,并單擊下載按鈕以觸發(fā)下載。元素在過(guò)程中保持隱藏狀態(tài),并在click()調(diào)用,一旦函數(shù)被調(diào)用,瀏覽器的下載提示就會(huì)顯示出來(lái),createObjectURL和Blob這兩種技術(shù)才是真正的魔力!

          后端工程師表示可以早點(diǎn)下班了

          我們都知道Python可以很輕松地實(shí)現(xiàn)某些功能,而且還可以編寫網(wǎng)頁(yè),比如Remi,Pysimplegui,但是操作JavaScript這種瀏覽器的腳本語(yǔ)言,還是第一次聽(tīng)說(shuō),小編也是第一次聽(tīng)說(shuō),于是就跟大家腦補(bǔ)這一知識(shí)。


          一、PyExecJS

          是一個(gè)可以執(zhí)行JavaScript腳本的Python模塊,可以與網(wǎng)頁(yè)上的JavaScript進(jìn)行交互,這樣就能更加精準(zhǔn)地獲取到網(wǎng)頁(yè)中的加密內(nèi)容,如果用Python中的網(wǎng)絡(luò)模塊進(jìn)行請(qǐng)求,會(huì)無(wú)法解密文檔中的加密內(nèi)容,這個(gè)時(shí)候使用我們的PyExecJS可以很方便到的解密網(wǎng)頁(yè)中的加密內(nèi)容,當(dāng)然這得你會(huì)Js逆向才可以。不過(guò)要想PyExecJS解析JS語(yǔ)句沒(méi)毛病,還得整個(gè)Js語(yǔ)言解析環(huán)境,這里推薦NodeJS,尷尬。我們來(lái)看下PyExecJs的用法:

          1.常規(guī)操作

          import execjs
          aa=execjs.eval("'one|two|three'.split('|')") #執(zhí)行JavaScript代碼,將字符串分割形成數(shù)組
          print(aa) 
          
          
          e=execjs.compile('''     #編譯一個(gè)表達(dá)式
          function add(x,y){
            return x+y;
          }
          ''')
          print(e.call('add',10,20))#調(diào)用編譯好的函數(shù)并且賦值

          也可以通過(guò)獲取引擎來(lái)運(yùn)行我們的語(yǔ)句,如下:

          print(execjs.get().eval('1+1'))


          2.查看解釋引擎

          print(execjs.get().name)

          這里JavaScript的解釋引擎是JScript,我們還可以使用自己指定給力的引擎,比如“Nodejs”。


          3.指定引擎

          import execjs
          import os
          os.environ["EXECJS_RUNTIME"] = "Node"
          print(execjs.get().name)

          也可以手動(dòng)指定引擎,如下:

          js1=execjs.get(execjs.runtime_names.JScript)
          print(js1.eval('1'))
          
          
          js2=execjs.get(execjs.runtime_names.Node)
          print(js2.eval('2'))


          二、Js2Py

          這個(gè)我覺(jué)得算是比較好的了,可以說(shuō)是一個(gè)綜合體,它不需要依賴別的環(huán)境,可以獨(dú)立運(yùn)行Js文件,只不過(guò)它的運(yùn)行速度可能會(huì)稍微慢一點(diǎn)而已,但是這都不叫事。下面我們來(lái)看看它有哪些神器的功能吧。

          1.常規(guī)操作,必須的


          2.循環(huán)遍歷

          import js2py
          aa=js2py.eval_js(
          '''
          var i=0;
          for(var c=1;c<6;c++){
          console.log(c);
          }
          
          
          '''
          )
          print(aa)


          3.讀取Js文件

          我們可以把JS文件寫入文件中,以便我們進(jìn)行調(diào)用,如下:

          1.js

          function f(aa){
              if(aa>11){
                  console.log('OK')
          
          
              }else{
                  console.log('Fail')
            }
          }

          Python文件

          import  js2py
          with open('1.js','r') as f:
              aa=js2py.eval_js(f.read())
              print(aa(11))


          4.爬取網(wǎng)站數(shù)據(jù)

          這里我們以淘寶為主,我想整它的JS腳本文件,如下:

          import execjs
          import requests
          import re
          url = 'https://ai.taobao.com/?pid=mm_26632323_6762370_25910879'
          res=requests.get(url).text
          js=re.findall(r'<script>(.*?)</script>',res)
          print(js,'\n')
          js1=re.sub(r'eval\(','return(',js[0])
          html="function getLego2WPK(){" + js1 + "};"
          ctx = execjs.compile(html)
          temp = ctx.call('getLego2WPK')
          print(temp)


          三、PyV8

          基于Google的V8引擎打造,遺憾的是目前只支持Python2版本,而且已不再維護(hù),建議Python2的小伙伴可以去試試。


          四、總結(jié)

          本文主要盤點(diǎn)了3個(gè)可以操作JavaScript的Python庫(kù),分別是PyExecJS、Js2Py和PyV8,只要我們用好了這些模塊以后玩爬蟲就能更加技高一籌,并且準(zhǔn)確率更高了。


          ------------------- End -------------------

          結(jié)尾

          看到下面的資料了嗎,我還有很多哦!快來(lái)私信我領(lǐng)取吧!

          帶你從Python入門到就業(yè)!錯(cuò)過(guò)就莫得啦!


          主站蜘蛛池模板: 人妻无码视频一区二区三区| 亚洲线精品一区二区三区| 亚洲午夜在线一区| 另类一区二区三区| 亚洲av日韩综合一区在线观看| 国产色综合一区二区三区| 一区二区三区无码视频免费福利 | 国产成人精品一区二区三区免费 | 蜜桃无码AV一区二区| 亚洲欧美日韩中文字幕一区二区三区| 亚洲性色精品一区二区在线| 性色av无码免费一区二区三区| 冲田杏梨高清无一区二区| 国产剧情国产精品一区| 99无码人妻一区二区三区免费 | 亚洲一区二区三区乱码A| 国产精品特级毛片一区二区三区| 国产日本亚洲一区二区三区| 精品人妻AV一区二区三区| 乱精品一区字幕二区| 国产精品美女一区二区三区| 国产主播福利一区二区| 中文字幕一区二区精品区| 亚洲成av人片一区二区三区| 国产激情一区二区三区| 91久久精品午夜一区二区| 精品国产一区二区三区免费看| 久夜色精品国产一区二区三区| 久久人做人爽一区二区三区| 小泽玛丽无码视频一区| 2021国产精品一区二区在线| 免费无码AV一区二区| 亚洲一区免费在线观看| 合区精品久久久中文字幕一区 | 精品国产AV无码一区二区三区| 中文字幕精品一区二区精品| 精品亚洲福利一区二区| 亚洲AV无码一区二区乱子伦| 日韩A无码AV一区二区三区| 国产高清一区二区三区| 亚洲日韩激情无码一区|