python打开网页并输入数据
用selenium库模拟浏览器操作,打开是网页python处理网页交互的主流方案。我上周写了个自动登录脚本,并输从打开页面到提交表单,入数总共不到30行代码。打开整个过程比我想象中直接——没有复杂的网页API,就是并输告诉浏览器“去哪个网址,找到输入框,入数敲几个字符,打开点一下按钮”。网页
先装库,并输这是入数最基础的一步。`pip install selenium`,打开然后去下载对应浏览器的网页驱动。Chrome就用chromedriver,并输Firefox就用geckodriver。版本必须匹配,否则会报session not created的错误。我第一次用的时候卡在这上面半小时,后来发现是驱动版本太旧。
打开网页的代码很直白。看这个例子:
from selenium import webdriver driver = webdriver.Chrome() driver.get("https://example.com/login") 就这么两行,浏览器窗口弹出来了,地址栏自动跳转到目标页面。注意那个`driver.get()`方法,它会等页面完全加载完才执行下一行代码。但有时候页面用了大量AJAX,加载标志早就没了,内容还在慢慢渲染。这时候你得加个`time.sleep(2)`或者用`WebDriverWait`去显式等待某个元素出现。显式等待更靠谱,sleep太粗暴。
找到输入框是下一步的关键。网页上的每个输入框都有对应的HTML属性,比如`id`、`name`或者`class`。用`find_element`系列方法就能定位。举个例子,如果登录框长这样:
<input type="text" id="username" name="user"> 那定位它的代码就是:
username_field = driver.find_element_by_id("username") 输入数据更简单,直接调`send_keys()`方法。想输入“admin”,就写`username_field.send_keys("admin")`。注意别用`send_keys()`塞太长的字符串,有时候会触发网页的字符限制。我见过有人往里塞了500个字符的密码,结果页面直接崩了。
填完数据要提交,通常有两种方式。一种是找到提交按钮,用`.click()`点它。另一种是模拟按回车键,比如在密码框里执行`password_field.send_keys(Keys.ENTER)`。后者在某些单页应用里更可靠,因为很多框架会拦截按钮点击事件,但键盘事件响应更直接。
有个坑必须提醒你——iframe。如果输入框嵌在`<iframe>`里,直接`find_element`会找不到。你得先切换进去:`driver.switch_to.frame("frame_name")`。处理完再切回来,`driver.switch_to.default_content()`。这问题在第三方登录页面特别常见,比如用QQ或微信授权登录的场景。
还有个细节,网页可能在输入前先清空已有内容。用`.clear()`方法就行,否则`send_keys()`会在原有内容后面追加。我之前写自动填表脚本时忘了这茬,结果表单里出现了“旧数据新数据”拼接的怪东西。
写自动化脚本别只盯着成功路径。你最好在关键步骤加个`try...except`,捕获超时或元素不存在的异常。比如这样:
try: driver.find_element_by_id("submit").click() except Exception as e: print("提交失败:", e) 这样脚本挂掉的时候,至少能告诉你卡在哪一步。调试起来省很多事。
最后提醒一句,别拿这个技术去搞恶意刷票或撞库。我见过有人写脚本批量注册垃圾账号,结果IP被封了,整个网段都遭殃。正经用途多得是——自动填测试数据、批量导入商品信息、爬虫登录后抓取数据,这些都是selenium发挥价值的地方。
整个流程跑通也就几分钟的事。如果你第一次试,建议拿自己的博客后台或者某个测试站点练手。找个有登录功能的网页,把账号密码写进脚本里,跑一遍看看效果。成功那一刻,你会觉得浏览器像个听话的机器人,指哪打哪。
