You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python实现网页输入框填值并获取返回结果?

Python实现网页输入框填值并获取返回结果

方法一:使用Selenium(模拟浏览器操作)

你的Selenium思路完全可行,这是最直观的模拟用户操作的方式,适合处理动态渲染或表单验证复杂的页面。补全提交步骤后的完整代码如下:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 初始化浏览器(新版本Selenium可自动管理驱动,无需手动指定路径)
driver = webdriver.Chrome()

try:
    # 打开目标页面
    driver.get("https://egov.uscis.gov/casestatus/landing.do")
    
    # 定位输入框并填入案件编号
    elem = driver.find_element(By.NAME, "appReceiptNum")
    elem.send_keys("你的案件编号")
    
    # 提交方式1:按回车键提交
    elem.send_keys(Keys.RETURN)
    
    # 提交方式2:点击提交按钮(若页面有明确提交按钮可使用)
    # submit_btn = driver.find_element(By.ID, "submitButton")
    # submit_btn.click()
    
    # 等待结果页面加载并提取内容
    wait = WebDriverWait(driver, 10)
    result_element = wait.until(EC.presence_of_element_located((By.CLASS_NAME, "case-status-content")))
    print(result_element.text)
finally:
    # 关闭浏览器
    driver.quit()

方法二:使用requests直接模拟表单提交(无浏览器,效率更高)

如果页面没有复杂JS渲染或验证逻辑,直接用requests模拟POST请求会更高效,无需启动浏览器。步骤如下:

  1. 用浏览器开发者工具(F12)查看表单提交的请求详情:
    • 获取POST请求的目标URL(通常在表单的action属性中)
    • 确认需提交的参数(比如appReceiptNum,部分页面可能需要隐藏参数如CSRF Token)
  2. 编写代码模拟请求:
import requests
from bs4 import BeautifulSoup

# 目标页面URL
landing_url = "https://egov.uscis.gov/casestatus/landing.do"
# 表单提交的目标URL(通过开发者工具获取)
submit_url = "https://egov.uscis.gov/casestatus/mycasestatus.do"

# 使用Session维持会话,自动处理Cookie
session = requests.Session()

# 先GET页面,获取必要的Cookie和可能的隐藏参数
response = session.get(landing_url)
soup = BeautifulSoup(response.text, "lxml")

# 构造提交参数
submit_data = {
    "appReceiptNum": "你的案件编号",
    # 若页面存在CSRF Token等隐藏参数,需从页面提取后添加
    # "csrfmiddlewaretoken": soup.find("input", {"name": "csrfmiddlewaretoken"})["value"]
}

# 发送POST请求获取结果
result_response = session.post(submit_url, data=submit_data)
result_soup = BeautifulSoup(result_response.text, "lxml")

# 提取结果内容
result_content = result_soup.find(class_="case-status-content")
print(result_content.text if result_content else "未查询到结果")

两种方法对比

  • Selenium:无需分析请求细节,完全模拟用户操作,适配复杂页面,但速度慢、资源占用高
  • requests:执行速度快、资源消耗低,但需要手动分析请求参数,适合静态或简单动态页面

内容的提问来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 12:45:50