Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 亚洲手机看片,青青草原国产一区二区,欧美日韩顶级毛片www免费看

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

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

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

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

          TML 腳本

          HTML script 元素

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

          script 元素既可包含腳本語句,也可通過 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)簽提供無法使用腳本時(shí)的替代內(nèi)容,比方在瀏覽器禁用腳本時(shí),或?yàn)g覽器不支持客戶端腳本時(shí)。

          noscript 元素可包含普通 HTML 頁面的 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)的地方,歡迎留言糾正。感覺還不錯(cuò)歡迎關(guān)注收藏轉(zhuǎn)載哦

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

          后端的活我也能干了

          廢話不多說,直接上腳本。

          1、javascript腳本

          function downloadFile(data, fileName, type="text/plain") {
           // 創(chuàng)建不可見的元素
           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);
           // 通過模擬點(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ā)下載。元素在過程中保持隱藏狀態(tài),并在click()調(diào)用,一旦函數(shù)被調(diào)用,瀏覽器的下載提示就會(huì)顯示出來,createObjectURL和Blob這兩種技術(shù)才是真正的魔力!

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

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


          一、PyExecJS

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

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

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

          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ǐng)取吧!

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


          主站蜘蛛池模板: 久久免费国产精品一区二区| 国产福利酱国产一区二区| 正在播放国产一区| 一夲道无码人妻精品一区二区| 亚洲av成人一区二区三区在线播放 | 亚洲性日韩精品一区二区三区 | 精品人妻无码一区二区色欲产成人| 相泽亚洲一区中文字幕| 国产精品成人免费一区二区 | 中文字幕精品一区| 乱人伦一区二区三区| 日本激情一区二区三区| 久久国产一区二区| 精品国产日产一区二区三区 | 国产成人精品无码一区二区老年人| 国产经典一区二区三区蜜芽 | 精品国产一区二区三区久久蜜臀| 亚洲熟女乱综合一区二区| 国产激情一区二区三区四区 | 无码人妻一区二区三区免费| 乱色精品无码一区二区国产盗| 激情内射日本一区二区三区| 亚洲国产美国国产综合一区二区| 精品一区二区三区免费观看| 日本一区精品久久久久影院| 亚洲一区二区三区香蕉| 无码人妻AV免费一区二区三区| 好看的电影网站亚洲一区| 日韩在线一区二区| 无码精品人妻一区二区三区免费| 无码AV一区二区三区无码| 国产精品 一区 在线| 中文字幕在线观看一区二区| 国产成人精品一区二区秒拍| 久久精品午夜一区二区福利| 中文字幕精品一区二区| 美日韩一区二区三区| 无码乱人伦一区二区亚洲一| 日韩精品一区二区三区色欲AV| 一区二区三区高清| 国产91精品一区|