πŸš€ Как Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ JavaScript Π½Π° Python: руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

Как Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ JavaScript Π½Π° Python?

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ PyV8 для запуска ΠΊΠΎΠ΄Π° JavaScript Π½Π° Python. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования этой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ:


from PyV8 import PyV8

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ контСкста JavaScript
ctxt = PyV8.JSContext()
ctxt.enter()

# Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ JavaScript ΠΊΠΎΠ΄Π°
result = ctxt.eval("1 + 1")

print(result)  # Π’Ρ‹Π²ΠΎΠ΄ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°

# ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° контСкста
ctxt.leave()

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создаСм Π½ΠΎΠ²Ρ‹ΠΉ контСкст JavaScript с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ PyV8, выполняСм ΠΊΠΎΠ΄ JavaScript, вычисляСм сумму 1 + 1 ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ вас установлСна Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° PyV8 ΠΏΠ΅Ρ€Π΅Π΄ запуском этого ΠΊΠΎΠ΄Π°:


pip install PyV8

Однако стоит ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° PyV8 Π½Π΅ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ поддСрТиваСтся ΠΈ Π½Π΅ совмСстима с послСдними вСрсиями Python. ВмСсто этого Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ использованиС Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ PyExecJS ΠΈΠ»ΠΈ Node.js, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ JavaScript Π½Π° Python.

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ JavaScript Π½Π° Python?

JavaScript ΠΈ Python ΡΠ²Π»ΡΡŽΡ‚ΡΡ двумя Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ языками программирования, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ со своими особСнностями ΠΈ цСлями. Однако, ΠΈΠ½ΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим нСсколько способов Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ JavaScript Π½Π° Python ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π°.

1. ИспользованиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ PyExecJS

PyExecJS - это Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Python, которая позволяСт Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ JavaScript ΠΊΠΎΠ΄ Π²Π½ΡƒΡ‚Ρ€ΠΈ Python. Для использования PyExecJS Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ pip:


    pip install PyExecJS
    

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования PyExecJS:


    import execjs

    javascript_code = '''
    function add(a, b) {
        return a + b;
    }
    '''

    context = execjs.compile(javascript_code)
    result = context.call('add', 3, 4)
    print(result)  # Π’Ρ‹Π²ΠΎΠ΄: 7
    

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ execjs ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ JavaScript ΠΊΠΎΠ΄. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ 'add' ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π΅ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ 3 ΠΈ 4, получая Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ 7.

2. ИспользованиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ PyV8

PyV8 - это Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Python, которая прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ JavaScript ΠΊΠΎΠ΄ Π² Python. Однако, Π²Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ PyV8 Π½Π΅ поддСрТиваСтся Π½Π° послСдних вСрсиях Python, поэтому рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ PyExecJS.

3. ИспользованиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Selenium

Selenium - это популярная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°. Она Ρ‚Π°ΠΊΠΆΠ΅ позволяСт Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ JavaScript Π½Π° Python. Для использования Selenium Π²Π°ΠΌ сначала Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ pip:


    pip install selenium
    

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования Selenium:


    from selenium import webdriver

    driver = webdriver.Firefox()
    driver.get("https://www.example.com")

    # Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ JavaScript
    result = driver.execute_script("return 2 + 3;")
    print(result)  # Π’Ρ‹Π²ΠΎΠ΄: 5

    driver.quit()
    

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Π²Π΅Π±-страницу с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Firefox WebDriver ΠΈ выполняСм JavaScript ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ складываСт числа 2 ΠΈ 3, получая Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ 5.

4. Запуск JavaScript ΠΊΠΎΠ΄Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ HTML

Если Π²Π°ΠΌ трСбуСтся Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ JavaScript ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТится Π²Π½ΡƒΡ‚Ρ€ΠΈ HTML Ρ„Π°ΠΉΠ»Π°, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ BeautifulSoup для парсинга ΠΈ выполнСния ΠΊΠΎΠ΄Π°.


    from bs4 import BeautifulSoup

    html = '''
    <html>
        <body>
            <script>
                function multiply(a, b) {
                    return a * b;
                }
                var result = multiply(4, 5);
                console.log(result);
            </script>
        </body>
    </html>
    '''

    soup = BeautifulSoup(html, 'html.parser')
    script = soup.find('script').string

    # Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ JavaScript ΠΊΠΎΠ΄Π°
    result = execjs.eval(script)
    print(result)  # Π’Ρ‹Π²ΠΎΠ΄: 20
    

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ BeautifulSoup для получСния содСрТимого Ρ‚Π΅Π³Π° <script> ΠΈΠ· HTML ΠΈ выполняСм Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ execjs.eval(). Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ число 20, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ 4 Π½Π° 5.

Π’Ρ‹Π²ΠΎΠ΄

Как Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π΅ΡΡ‚ΡŒ нСсколько способов Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ JavaScript ΠΊΠΎΠ΄ Π½Π° Python. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ PyExecJS, PyV8 ΠΈΠ»ΠΈ Selenium для этого. Π’Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ JavaScript ΠΊΠΎΠ΄Π°, содСрТащСгося Π²Π½ΡƒΡ‚Ρ€ΠΈ HTML Ρ„Π°ΠΉΠ»Π°, с использованиСм BeautifulSoup.

Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ подходящий ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² зависимости ΠΎΡ‚ Π²Π°ΡˆΠΈΡ… потрСбностСй ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π£Π΄Π°Ρ‡ΠΈ Π² ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ JavaScript ΠΈ Python!

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

Как Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ JavaScript + HTML ΠΊΠΎΠ΄ Π² Vs Code

Python парсинг сайтов с JavaScript | Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ для Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° JS

Python-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ большС Π½Π΅ Π½ΡƒΠΆΠ΅Π½ JavaScript. Brython, ΠΈΠ»ΠΈ Python Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

πŸ” Как эффСктивно ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ тСкст ΠΎΡ‚ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² Π² Python?

πŸ”Ž Бколько сущСствуСт ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² сравнСния Π² языкС Python? πŸ€”

πŸ”§ Как ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π³Ρ€Π°Ρ„ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅? Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

πŸš€ Как Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ JavaScript Π½Π° Python: руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

πŸ”§ Как ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Python Ρ„Π°ΠΉΠ» Π² .exe: шаг Π·Π° шагом руководство

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° Python? πŸ“‚πŸ

Как ΠΌΠ½ΠΎΠ³ΠΎ Π·Π°Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ ΠΊΠΎΠ΄Π΅Ρ€Ρ‹ Python: разбираСмся Π² Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°Ρ