如何向网页输入框填数据并点击按钮?WordPress密码页登录求助
解决方案
方法1:用Selenium模拟浏览器操作
适合页面带前端渲染逻辑,或不想抓包分析表单的场景,直接模拟用户操作流程:
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 初始化Chrome浏览器(需确保ChromeDriver版本与浏览器匹配,可放PATH或指定路径) driver = webdriver.Chrome() target_url = "你的受密码保护页面URL" password = "页面访问密码" try: # 打开目标页面 driver.get(target_url) # 等待密码输入框加载完成(显式等待避免网络延迟导致元素找不到) password_input = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.XPATH, '//*[@id="pwbox-1902"]')) ) # 输入密码 password_input.send_keys(password) # 等待提交按钮可点击后触发点击 submit_btn = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.XPATH, '//*[@id="content"]/div/form/p[2]/input')) ) submit_btn.click() # 页面登录完成后,调用你已有的数据读取代码 # 示例:获取页面源码传给你的读取函数 page_source = driver.page_source your_existing_data_reader(page_source) # 替换为你的实际读取函数 finally: # 按需关闭浏览器,若需后续操作可注释此句 driver.quit()
注意事项
- 先安装依赖:
pip install selenium - 显式等待比强制
time.sleep()更稳定,能适配不同网络环境
方法2:用Requests模拟表单提交
如果页面是纯后端渲染,不需要浏览器,直接模拟POST请求效率更高:
先通过浏览器F12抓包确认表单参数:提交密码后查看Network面板的POST请求,WordPress密码保护页一般需要以下参数:
post_password:输入的密码(对应输入框的name属性)_wp_http_referer:当前页面URL(部分站点必填)
import requests target_url = "你的受密码保护页面URL" password = "页面访问密码" # 用Session保持会话,登录后请求自动携带认证Cookie session = requests.Session() # 先GET页面,获取必要的Cookie和隐藏字段 session.get(target_url) # 构造表单提交数据 form_data = { "post_password": password, "_wp_http_referer": target_url } # 提交登录表单(表单action通常为当前页面,直接POST目标URL即可) session.post(target_url, data=form_data) # 登录成功后调用现有读取代码 page_content = session.get(target_url).text your_existing_data_reader(page_content) # 替换为你的实际读取函数
注意事项
- 先安装依赖:
pip install requests - 若页面有额外隐藏字段(如CSRF令牌),需从GET页面的源码中提取后加入
form_data
内容的提问来源于stack exchange,提问作者TriXcze
相关产品推荐
相关产品推荐

