Xin chào người đọc, Hy vọng bạn và gia đình có sức khỏe tốt!
JavaScript là một ngôn ngữ rất mạnh mẽ, thành thật mà nói, tôi là một em bé trong JS nhưng tôi luôn tự hỏi, JS có thể tích hợp với Python. Gần đây, tôi đã lướt Internet và mô -đun JS2Py xuất hiện trong tìm kiếm Google của tôi.
Trong bài viết trên blog này, chúng tôi sẽ tìm hiểu cách chạy các lệnh JavaScript từ bên trong tập lệnh Python. Chúng tôi sẽ sử dụng mô -đun JS2Py.
Kiểm tra kho lưu trữ cho tài nguyên cuối cùng trong Python. Thả một ngôi sao nếu bạn thấy nó hữu ích! Có bất cứ điều gì để thêm? Mở PR trên cùng!
Bạn có thể tham khảo hướng dẫn video YouTube của tôi để hiểu rõ hơn và hướng dẫn từng bước giống nhau.
Những gì sẽ được đề cập trong blog này
1. Js2Py Introduction
2. How to Run Javascript commands from inside Python script
Giới thiệu JS2Py:
Bạn có thể dịch JavaScript sang Python bằng JS2Py. JS2Py là một mô -đun Python có thể được sử dụng để dịch JavaScript thành Python & hoạt động như một trình thông dịch JavaScript được viết bằng Python thuần túy 100%.
- Nó dịch bất kỳ JavaScript hợp lệ [ECMA Script 5.1] sang Python.
- Bản dịch hoàn toàn tự động.
- Không có bất kỳ phụ thuộc nào - chỉ sử dụng thư viện Python tiêu chuẩn.
Limitations:
Nó có ba hạn chế:
- Chế độ nghiêm ngặt bị bỏ qua.
- với tuyên bố không được hỗ trợ.
- Cuộc gọi gián tiếp đến Eval Will được coi là một cuộc gọi trực tiếp đến Eval [do đó luôn luôn trong phạm vi địa phương]
Nếu bạn muốn biết thêm về nó, bạn có thể tham khảo tài liệu JS2Py. Sử dụng liên kết này để điều hướng đến tài liệu.
Bây giờ bạn đã nhận thức được những điều cơ bản của JS2Py, chúng ta có thể tiến lên phần mã hóa. Bắt đầu nào!
Thời gian để mã!
Bạn có thể tìm thấy tất cả các mã tại Kho lưu trữ GitHub của tôi. Thả một ngôi sao nếu bạn thấy nó hữu ích.
Để truy cập thư viện Python, bạn cần cài đặt nó vào môi trường Python của mình, hãy sử dụng lệnh sau để cài đặt
import js2py
0pip install js2py
Bây giờ, hãy để nhập khẩu gói trong tập lệnh Python của chúng tôi.
import js2py
Hãy bắt đầu với một
import js2py
1 đơn giản.#example 1
#a js command
js1 = 'console.log[ "Hello World!" ]'res1 = js2py.eval_js[js1]
Chúng ta hãy nhìn vào mã
import js2py
2 tương đương:print['Hello World!']
Vì vậy, ở đây, chúng tôi đã lưu trữ lệnh
import js2py
3 trong import js2py
4. Chúng tôi sẽ sử dụng phương thức import js2py
5 từ mô -đun import js2py
6 tại đây, chuyển mã JS của chúng tôi trong đó và lưu trữ nó trong import js2py
7. Cuối cùng chúng tôi là kết quả của chúng tôi.#print the result
res1#OUTPUT: Hello World!
Bây giờ, hãy để Lôi nhìn vào một ví dụ khác! Hãy để tạo ra một chức năng bổ sung trong JavaScript.
#exapmle 2
#a js function
js2 = '''function add[a, b]{
return a + b;
}'''
Chúng ta hãy nhìn vào mã
import js2py
2 tương đương:def add[a, b]:
return a+b
Vì vậy, ở đây, chúng tôi đã lưu trữ lệnh
import js2py
3 trong import js2py
4. Chúng tôi sẽ sử dụng phương thức import js2py
5 từ mô -đun import js2py
6 tại đây, chuyển mã JS của chúng tôi trong đó và lưu trữ nó trong import js2py
7. Cuối cùng chúng tôi là kết quả của chúng tôi.a = int[input['Enter a num: ']]
Bây giờ, hãy để Lôi nhìn vào một ví dụ khác! Hãy để tạo ra một chức năng bổ sung trong JavaScript.
res2 = js2py.eval_js[js2]
Hãy để lưu trữ nó trong
import js2py
9 và để làm cho chương trình của chúng tôi tương tác nhiều hơn, hãy lấy đầu vào từ người dùng bên trong tập lệnh Python.pip install js2py
0Chúng tôi sẽ sử dụng phương pháp
import js2py
5 từ mô -đun import js2py
6 tại đây, truyền trong hàm JS của chúng tôi trong đó và lưu trữ nó trong #example 12.
#a js command
js1 = 'console.log[ "Hello World!" ]'res1 = js2py.eval_js[js1]
Cuối cùng, hãy để in ra kết quả của chúng tôi. Vì vậy, lưu và chạy tập lệnh Python.
Và nó sẽ xuất hiện bổ sung hai số. Nó sẽ thay đổi vì nó phụ thuộc vào đầu vào của người dùng.
Đây là một ví dụ làm việc cơ bản của JS2Py. Đây là tất cả về các lệnh JavaScript chạy từ bên trong tập lệnh Python. Đó là nó!
Bạn có thể tìm thấy tất cả các mã tại Kho lưu trữ GitHub của tôi. Thả một ngôi sao nếu bạn thấy nó hữu ích.
Để truy cập thư viện Python, bạn cần cài đặt nó vào môi trường Python của mình, hãy sử dụng lệnh sau để cài đặt
import js2py
0Bây giờ, hãy để nhập khẩu gói trong tập lệnh Python của chúng tôi.
Hãy bắt đầu với một
import js2py
1 đơn giản.- Chúng ta hãy nhìn vào mã
import js2py
2 tương đương: - Vì vậy, ở đây, chúng tôi đã lưu trữ lệnh
import js2py
3 trongimport js2py
4. Chúng tôi sẽ sử dụng phương thứcimport js2py
5 từ mô -đunimport js2py
6 tại đây, chuyển mã JS của chúng tôi trong đó và lưu trữ nó trongimport js2py
7. Cuối cùng chúng tôi là kết quả của chúng tôi. - Bây giờ, hãy để Lôi nhìn vào một ví dụ khác! Hãy để tạo ra một chức năng bổ sung trong JavaScript.
- Hãy để lưu trữ nó trong
import js2py
9 và để làm cho chương trình của chúng tôi tương tác nhiều hơn, hãy lấy đầu vào từ người dùng bên trong tập lệnh Python. - Chúng tôi sẽ sử dụng phương pháp
import js2py
5 từ mô -đunimport js2py
6 tại đây, truyền trong hàm JS của chúng tôi trong đó và lưu trữ nó trong#example 1
2.
#a js command
js1 = 'console.log[ "Hello World!" ]'res1 = js2py.eval_js[js1] - Cuối cùng, hãy để in ra kết quả của chúng tôi. Vì vậy, lưu và chạy tập lệnh Python.
- Và nó sẽ xuất hiện bổ sung hai số. Nó sẽ thay đổi vì nó phụ thuộc vào đầu vào của người dùng.
Resources:
- github.com/PiotrDabkowski/Js2Py
- pypi.org/project/Js2Py/0.27
Đây là một ví dụ làm việc cơ bản của JS2Py. Đây là tất cả về các lệnh JavaScript chạy từ bên trong tập lệnh Python. Đó là nó!
Tôi có các trang web HTML mà tôi đang bò bằng cách sử dụng XPath.
#example 13 của một nút nhất định cung cấp cho tôi chuỗi này:
#a js command
js1 = 'console.log[ "Hello World!" ]'res1 = js2py.eval_js[js1]
pip install js2py
1Tôi chỉ cần đầu ra của
#example 14. Tôi có thể viết một regex để tìm ra toàn bộ, nhưng tôi muốn mã của mình giữ gọn gàng. Sự thay thế tốt nhất là gì?
#a js command
js1 = 'console.log[ "Hello World!" ]'res1 = js2py.eval_js[js1]
Tôi đang vượt qua các thư viện sau, nhưng tôi không thấy một giải pháp chính xác. Hầu hết trong số họ đang cố gắng mô phỏng trình duyệt, làm cho mọi thứ sên chậm.
- //code.google.com/p/python-pidermonkey/ [nói rõ ràng
#example 1
5]
#a js command
js1 = 'console.log[ "Hello World!" ]'res1 = js2py.eval_js[js1] - //code.google.com/p/webscraping/ [không thấy gì cho javascript, tôi có thể sai]
- //pypi.python.org/pypi/selenium [Trình duyệt mô phỏng]
Chỉnh sửa: Một ví dụ sẽ rất tuyệt .. [Barebones sẽ làm]
DDA
5,8292 Huy hiệu vàng24 Huy hiệu bạc34 Huy hiệu đồng2 gold badges24 silver badges34 bronze badges
Hỏi ngày 13 tháng 4 năm 2012 lúc 6:39Apr 13, 2012 at 6:39
6
Bạn cũng có thể sử dụng JS2Py được viết bằng Pure Python và có thể cả thực thi và dịch JavaScript sang Python. Hỗ trợ hầu như toàn bộ JavaScript ngay cả các nhãn, getters, setters và các tính năng hiếm khi được sử dụng khác.
pip install js2py
2Ưu điểm của JS2Py bao gồm tính di động và tích hợp cực kỳ dễ dàng với Python [vì về cơ bản JavaScript đang được dịch sang Python].
Để cài đặt:
pip install js2py
3Đã trả lời ngày 29 tháng 5 năm 2015 lúc 19:08May 29, 2015 at 19:08
Piotr dabkowskipiotr dabkowskiPiotr Dabkowski
5.4534 Huy hiệu vàng37 Huy hiệu bạc47 Huy hiệu đồng4 gold badges37 silver badges47 bronze badges
1
Sử dụng pyv8, tôi có thể làm điều này. Tuy nhiên, tôi phải thay thế
#example 16 bằng
#a js command
js1 = 'console.log[ "Hello World!" ]'res1 = js2py.eval_js[js1]
#example 17 vì không có DOM và do đó không có
#a js command
js1 = 'console.log[ "Hello World!" ]'res1 = js2py.eval_js[js1]
#example 18.
#a js command
js1 = 'console.log[ "Hello World!" ]'res1 = js2py.eval_js[js1]
pip install js2py
4Hoặc bạn có thể tạo một đối tượng tài liệu giả
pip install js2py
5
Daniel f
13.3k11 Huy hiệu vàng84 Huy hiệu bạc113 Huy hiệu đồng11 gold badges84 silver badges113 bronze badges
Đã trả lời ngày 13 tháng 4 năm 2012 lúc 7:07Apr 13, 2012 at 7:07
Kien Truongkien TruongKien Truong
Huy hiệu vàng 11k2 30 Huy hiệu bạc34 Huy hiệu đồng2 gold badges30 silver badges34 bronze badges
6
Thêm một giải pháp nữa khi PYV8 dường như không được công nhận và phụ thuộc vào phiên bản cũ của LIBV8.
Pyminiracer Đây là một gói xung quanh động cơ V8 và nó hoạt động với phiên bản mới và được duy trì tích cực.
#example 19
#a js command
js1 = 'console.log[ "Hello World!" ]'res1 = js2py.eval_js[js1]
pip install js2py
6Và vâng, bạn phải thay thế
#example 16 bằng
#a js command
js1 = 'console.log[ "Hello World!" ]'res1 = js2py.eval_js[js1]
#example 17 như những người khác đề xuất
#a js command
js1 = 'console.log[ "Hello World!" ]'res1 = js2py.eval_js[js1]
Đã trả lời ngày 21 tháng 3 năm 2018 lúc 9:16Mar 21, 2018 at 9:16
DienowdienowDienow
1.19710 Huy hiệu bạc13 Huy hiệu đồng10 silver badges13 bronze badges
2
Bạn có thể sử dụng bối cảnh JS2Py để thực thi mã JS của mình và nhận đầu ra từ Document.Write với đối tượng tài liệu giả:
pip install js2py
7Đã trả lời ngày 16 tháng 9 năm 2018 lúc 23:46Sep 16, 2018 at 23:46
MirkomirkoMirko
1.9622 Huy hiệu vàng18 Huy hiệu bạc16 Huy hiệu đồng2 gold badges18 silver badges16 bronze badges
Bạn có thể sử dụng Yêu cầu-HTML sẽ tải xuống và sử dụng Chromium bên dưới.
pip install js2py
8Thêm về điều này đọc ở đây
Đã trả lời ngày 8 tháng 4 năm 2020 lúc 15:19Apr 8, 2020 at 15:19
LevonlevonLevon
9.3704 Huy hiệu vàng44 Huy hiệu bạc41 Huy hiệu đồng4 gold badges44 silver badges41 bronze badges
QuickJS nên là lựa chọn tốt nhất sau khi QuickJS ra mắt. Chỉ cần
print['Hello World!']
2 và bạn đã sẵn sàng để đi.Sửa đổi dựa trên ví dụ về readme.
pip install js2py
9//github.com/PetterS/quickjs
Đã trả lời ngày 31 tháng 10 năm 2019 lúc 6:13Oct 31, 2019 at 6:13
Echoechoecho
2.3481 Huy hiệu vàng21 Huy hiệu bạc16 Huy hiệu đồng1 gold badge21 silver badges16 bronze badges
Thực sự muộn cho bữa tiệc nhưng bạn có thể sử dụng một người kế thừa PYV8 thường được duy trì bởi một tổ chức có uy tín [chủ quan] có tên là CloudFlare. Đây là URL kho lưu trữ:
//github.com/cloudflare/stpyv8
Đã trả lời ngày 13 tháng 7 lúc 16:01Jul 13 at 16:01
Cstayyabcstayyabcstayyab
2782 Huy hiệu bạc19 Huy hiệu đồng2 silver badges19 bronze badges