You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用Python等非JavaScript语言实现类似的DOM操作?

Replicating JavaScript DOM Manipulation in Python (and Other Non-JS Languages)

Great question! JavaScript's getElementsByTagName is a browser-native way to interact with the DOM, but for non-JS languages like Python, we need to use libraries that can either parse static HTML into a DOM-like structure or simulate a full browser environment to handle dynamic content. Let's walk through how to replicate your exact example.

First, Let's Recap Your JavaScript Goal

Your code grabs all <input> elements, then sets their value based on their name attribute:

InputTags = document.getElementsByTagName("input")

for (inputTag in InputTags) {
  if (inputTag.name == 'username') inputTag.value = "abc"
  else if (inputTag.name == 'password') {
    inputTag.value = "abc@123"
  }
}

Option 1: Static HTML (No Browser Required)

If you're working with static HTML (like a saved file or content fetched from a server that doesn't rely on JavaScript to render), Beautiful Soup is the go-to Python library for parsing and manipulating HTML structures.

Step 1: Install Dependencies

pip install beautifulsoup4 requests  # requests is optional, for fetching remote HTML

Step 2: Code Implementation

from bs4 import BeautifulSoup

# Replace this with your actual HTML content (could be from a file or requests.get())
html_content = """
<form>
  <input type="text" name="username">
  <input type="password" name="password">
  <input type="submit" value="Login">
</form>
"""

# Parse the HTML into a navigable DOM-like tree
soup = BeautifulSoup(html_content, "html.parser")

# Get all <input> tags (equivalent to getElementsByTagName)
input_tags = soup.find_all("input")

# Iterate and modify values just like your JS code
for input_tag in input_tags:
    tag_name = input_tag.get("name")  # Safely get the 'name' attribute
    if tag_name == "username":
        input_tag["value"] = "abc"
    elif tag_name == "password":
        input_tag["value"] = "abc@123"

# Print or save the modified HTML
print(soup.prettify())

Option 2: Dynamic Content (Simulate a Browser)

If the page relies on JavaScript to render content (like single-page apps or sites that load inputs after page load), you'll need to simulate a real browser. Selenium is perfect for this—it controls a browser and lets you interact with the live DOM just like JavaScript does.

Step 1: Install Dependencies

pip install selenium

You'll also need to download a browser driver (e.g., ChromeDriver for Chrome, GeckoDriver for Firefox) and ensure it's in your system PATH.

Step 2: Code Implementation

from selenium import webdriver
from selenium.webdriver.common.by import By

# Initialize the browser (we'll use Chrome here)
driver = webdriver.Chrome()

# Navigate to your target page
driver.get("https://your-login-page-url.com")

# Get all <input> elements from the live DOM
input_tags = driver.find_elements(By.TAG_NAME, "input")

# Modify the inputs just like your JS code
for input_tag in input_tags:
    tag_name = input_tag.get_attribute("name")
    if tag_name == "username":
        input_tag.clear()  # Clear existing value first
        input_tag.send_keys("abc")  # Set the new value
    elif tag_name == "password":
        input_tag.clear()
        input_tag.send_keys("abc@123")

# If you need to extract the modified DOM, you can get the page source
modified_html = driver.page_source
print(modified_html)

# Don't forget to close the browser when done
driver.quit()

For Other Non-JS Languages

The same pattern applies across languages:

  • Java: Use Jsoup for static HTML parsing, or Selenium for browser automation.
  • C#: Use HtmlAgilityPack for static HTML, or Selenium WebDriver for dynamic content.
  • Ruby: Use Nokogiri for static HTML, or Watir/Selenium for browser automation.

内容的提问来源于Stack Exchange,提问作者Gunacelan M

火山引擎 最新活动