如何用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请求会更高效,无需启动浏览器。步骤如下:
- 用浏览器开发者工具(F12)查看表单提交的请求详情:
- 获取POST请求的目标URL(通常在表单的
action属性中) - 确认需提交的参数(比如
appReceiptNum,部分页面可能需要隐藏参数如CSRF Token)
- 获取POST请求的目标URL(通常在表单的
- 编写代码模拟请求:
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
相关产品推荐
相关产品推荐

