Hướng dẫn how to execute javascript code in python - cách thực thi mã javascript trong python

Tôi có các trang web HTML mà tôi đang bò bằng cách sử dụng XPath. etree.tostring của một nút nhất định cung cấp cho tôi chuỗi này:


Tôi chỉ cần đầu ra của

import js2py

js = """
function escramble_758(){
var a,b,c
a='+1 '
b='84-'
a+='425-'
b+='7450'
c='9'
document.write(a+c+b)
}
escramble_758()
""".replace("document.write", "return ")

result = js2py.eval_js(js)  # executing JavaScript and converting the result to python string 
0. 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ì?

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.

  • http://code.google.com/p/python-spidermonkey/(nói rõ ràng
    import js2py
    
    js = """
    function escramble_758(){
    var a,b,c
    a='+1 '
    b='84-'
    a+='425-'
    b+='7450'
    c='9'
    document.write(a+c+b)
    }
    escramble_758()
    """.replace("document.write", "return ")
    
    result = js2py.eval_js(js)  # executing JavaScript and converting the result to python string 
    
    1)
  • http://code.google.com/p/webscraping/ (không thấy gì cho javascript, tôi có thể sai)
  • http://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)

Hướng dẫn how to execute javascript code in python - cách thực thi mã javascript trong python

DDA

5,8142 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.

import js2py

js = """
function escramble_758(){
var a,b,c
a='+1 '
b='84-'
a+='425-'
b+='7450'
c='9'
document.write(a+c+b)
}
escramble_758()
""".replace("document.write", "return ")

result = js2py.eval_js(js)  # executing JavaScript and converting the result to python string 

Ư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

Đã 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ế

import js2py

js = """
function escramble_758(){
var a,b,c
a='+1 '
b='84-'
a+='425-'
b+='7450'
c='9'
document.write(a+c+b)
}
escramble_758()
""".replace("document.write", "return ")

result = js2py.eval_js(js)  # executing JavaScript and converting the result to python string 
2 bằng
import js2py

js = """
function escramble_758(){
var a,b,c
a='+1 '
b='84-'
a+='425-'
b+='7450'
c='9'
document.write(a+c+b)
}
escramble_758()
""".replace("document.write", "return ")

result = js2py.eval_js(js)  # executing JavaScript and converting the result to python string 
3 vì không có DOM và do đó không có
import js2py

js = """
function escramble_758(){
var a,b,c
a='+1 '
b='84-'
a+='425-'
b+='7450'
c='9'
document.write(a+c+b)
}
escramble_758()
""".replace("document.write", "return ")

result = js2py.eval_js(js)  # executing JavaScript and converting the result to python string 
4.

import PyV8
ctx = PyV8.JSContext()
ctx.enter()

js = """
function escramble_758(){
var a,b,c
a='+1 '
b='84-'
a+='425-'
b+='7450'
c='9'
document.write(a+c+b)
}
escramble_758()
"""

print ctx.eval(js.replace("document.write", "return "))

Hoặc bạn có thể tạo một đối tượng tài liệu giả

class MockDocument(object):

    def __init__(self):
        self.value = ''

    def write(self, *args):
        self.value += ''.join(str(i) for i in args)


class Global(PyV8.JSClass):
    def __init__(self):
        self.document = MockDocument()

scope = Global()
ctx = PyV8.JSContext(scope)
ctx.enter()
ctx.eval(js)
print scope.document.value

Hướng dẫn how to execute javascript code in python - cách thực thi mã javascript trong python

Daniel f

13.2k11 Huy hiệu vàng84 Huy hiệu bạc112 Huy hiệu đồng11 gold badges84 silver badges112 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 11K22 gold badges29 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.

import js2py

js = """
function escramble_758(){
var a,b,c
a='+1 '
b='84-'
a+='425-'
b+='7450'
c='9'
document.write(a+c+b)
}
escramble_758()
""".replace("document.write", "return ")

result = js2py.eval_js(js)  # executing JavaScript and converting the result to python string 
5

from py_mini_racer import py_mini_racer
ctx = py_mini_racer.MiniRacer()
ctx.eval("""
function escramble_758(){
    var a,b,c
    a='+1 '
    b='84-'
    a+='425-'
    b+='7450'
    c='9'
    return a+c+b;
}
""")
ctx.call("escramble_758")

Và vâng, bạn phải thay thế

import js2py

js = """
function escramble_758(){
var a,b,c
a='+1 '
b='84-'
a+='425-'
b+='7450'
c='9'
document.write(a+c+b)
}
escramble_758()
""".replace("document.write", "return ")

result = js2py.eval_js(js)  # executing JavaScript and converting the result to python string 
2 bằng
import js2py

js = """
function escramble_758(){
var a,b,c
a='+1 '
b='84-'
a+='425-'
b+='7450'
c='9'
document.write(a+c+b)
}
escramble_758()
""".replace("document.write", "return ")

result = js2py.eval_js(js)  # executing JavaScript and converting the result to python string 
3 như những người khác đề xuất

Đã 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ả:

import js2py

js = """
var output;
document = {
    write: function(value){
        output = value;
    }
}
""" + your_script

context = js2py.EvalJs()
context.execute(js)
print(context.output)

Đã trả lời ngày 16 tháng 9 năm 2018 lúc 23:46Sep 16, 2018 at 23:46

MirkomirkoMirko

1.9422 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.

from requests_html import HTML

html = HTML(html="")

script = """
function escramble_758(){
    var a,b,c
    a='+1 '
    b='84-'
    a+='425-'
    b+='7450'
    c='9'
    return a+c+b;
}
"""

val = html.render(script=script, reload=False)
print(val)
# +1 425-984-7450

Thê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

Hướng dẫn how to execute javascript code in python - cách thực thi mã javascript trong python

LevonlevonLevon

9.2924 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

import js2py

js = """
function escramble_758(){
var a,b,c
a='+1 '
b='84-'
a+='425-'
b+='7450'
c='9'
document.write(a+c+b)
}
escramble_758()
""".replace("document.write", "return ")

result = js2py.eval_js(js)  # executing JavaScript and converting the result to python string 
8 và bạn đã sẵn sàng để đi.

Sửa đổi dựa trên ví dụ về readme.

from quickjs import Function

js = """
function escramble_758(){
var a,b,c
a='+1 '
b='84-'
a+='425-'
b+='7450'
c='9'
document.write(a+c+b)
escramble_758()
}
"""

escramble_758 = Function('escramble_758', js.replace("document.write", "return "))

print(escramble_758())

https://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ữ:

https://github.com/cloudflare/stpyv8

Đã trả lời ngày 13 tháng 7 lúc 16:01Jul 13 at 16:01

Hướng dẫn how to execute javascript code in python - cách thực thi mã javascript trong python

Cstayyabcstayyabcstayyab

2782 Huy hiệu bạc19 Huy hiệu đồng2 silver badges19 bronze badges

Tôi có thể chạy mã JavaScript trong Python không?

JS2Py hoạt động bằng cách dịch JavaScript trực tiếp thành Python. Nó chỉ ra rằng bạn có thể chạy JS trực tiếp từ mã Python mà không cần cài đặt các động cơ bên ngoài lớn như V8. Để sử dụng mô-đun, trước tiên nó phải được cài đặt vào hệ thống, vì nó không được tích hợp. Để sử dụng mô -đun, nó phải được nhập.. It indicates that you may run JS directly from Python code without installing large external engines like V8. To use the module it first has to be installed into the system, since it is not built-in. To use the module it has to be imported.

Làm thế nào chạy JavaScript từ trang web với Python?

Sử dụng Thư viện Selenium Python để chạy mã JavaScript ...
Cài đặt Thư viện Selen trong Mac và Windows.Đầu tiên, trong thiết bị đầu cuối đi đến một thư mục.....
Cài đặt trình điều khiển Google Chrome không đầu.Để tự động hóa trình duyệt web, chúng tôi cần cài đặt trình điều khiển Google Chrome.....
Chạy kịch bản Python.....
Chạy chương trình.....
Phân tích kịch bản Python ..

Làm cách nào để chạy mã .js?

Để thực thi JavaScript trong trình duyệt, bạn có hai tùy chọn - đặt nó vào bên trong một phần tử tập lệnh ở bất cứ đâu bên trong tài liệu HTML hoặc đặt nó vào bên trong tệp JavaScript bên ngoài (với phần mở rộng JS) và sau đó tham chiếu tệp đó bên trong tài liệu HTML bằng cách sử dụngPhần tử tập lệnh trống với thuộc tính SRC.put it inside a script element anywhere inside an HTML document, or put it inside an external JavaScript file (with a . js extension) and then reference that file inside the HTML document using an empty script element with a src attribute.

Bạn có thể dịch JavaScript sang Python không?

Dịch JavaScript sang mã Python.JS2Py có thể dịch và thực thi hầu như mọi mã JavaScript.JS2Py được viết bằng Python thuần túy và không có bất kỳ sự phụ thuộc nào.Về cơ bản là một triển khai lõi JavaScript trong Python thuần túy.Js2Py is able to translate and execute virtually any JavaScript code. Js2Py is written in pure python and does not have any dependencies. Basically an implementation of JavaScript core in pure python.