序文
Pythonは特定の関数を簡単に実装でき、RemiやPysimpleguiなどのWebページを作成できることは誰もが知っていますが、JavaScriptなどのブラウザー用のスクリプト言語について聞いたのは初めてであり、これは初めてです。聞いたことがあるので、この知識をみんなの頭脳で満たしていきます。
多くの人がPythonを学び、どこから始めればよいのかわかりません。
多くの人がPythonを学び、基本的な文法を習得した後、どこから始めればよいかわかりません。
ケーススタディを行った多くの人々は、より高度な知識を学ぶ方法を知りません。
したがって、これら3つのタイプの人々のために、ビデオチュートリアル、電子書籍、およびコースのソースコードを無料で受け取ることができる優れた学習プラットフォームを提供します。
QQグループ:705933274
1つ、PyExecJS
これはJavaScriptスクリプトを実行できるPythonモジュールです。Webページ上のJavaScriptと対話できるため、Webページの暗号化されたコンテンツをより正確に取得できます。Pythonのネットワークモジュールを使用してリクエストすると、次のようになります。ドキュメントコンテンツの暗号化を復号化することはできません。今回はPyExecJSを使用すると、Webページの暗号化されたコンテンツを復号化するのに非常に便利です。もちろん、Jを逆にする必要があります。ただし、PyExecJSで問題なくJSステートメントを解析する場合は、Js言語環境全体を解析する必要があります。ここではNodeJSをお勧めしますが、これは恥ずかしいことです。PyExecJsの使用法を見てみましょう。
1.日常の操作
import execjs
aa=execjs.eval("'one|two|three'.split('|')") #执行JavaScript代码,将字符串分割形成数组
print(aa)
e=execjs.compile(''' #编译一个表达式
function add(x,y){
return x+y;
}
''')
print(e.call('add',10,20))#调用编译好的函数并且赋值
次のように、エンジンを取得してステートメントを実行することもできます。
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)
次のように、エンジンを手動で指定することもできます。
js1=execjs.get(execjs.runtime_names.JScript)
print(js1.eval('1'))
js2=execjs.get(execjs.runtime_names.Node)
print(js2.eval('2'))
2、Js2Py
これは比較的良いと思います。複雑であると言えます。他の環境に依存する必要はなく、Jsファイルを個別に実行できますが、実行速度は少し遅いかもしれませんが、これは何もありません。そのアーティファクトの機能を見てみましょう。
1.日常の操作、必須
2.ループトラバーサル
import js2py
aa=js2py.eval_js(
'''
var i=0;
for(var c=1;c<6;c++){
console.log(c);
}
'''
)
print(aa)
3.Jsファイルを読み取ります
JSファイルをファイルに書き込んで、次のように呼び出すことができます。
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.Webサイトデータをクロールします
ここでは淘宝網に焦点を当て、その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)
3、PyV8
これはGoogleのV8エンジンに基づいていますが、残念ながらPython2バージョンのみをサポートしており、現在は保守されていません。Python2の友人が試してみることをお勧めします。
4、まとめ
この記事では主に、JavaScriptを操作できる3つのPythonライブラリ、つまりPyExecJS、Js2Py、PyV8について説明します。これらのモジュールを使用する限り、クローラーをプレイする際のスキルと精度が向上します。