如何通过循环向卡特兰数计算器网站传入n值并保存结果?
卡特兰数大数获取解决方案
方法一:Selenium模拟浏览器操作
直接模拟用户输入和点击操作,无需分析请求细节,适合快速实现。
操作步骤
- 先安装依赖:
pip install selenium,并下载对应浏览器的驱动(如ChromeDriver)配置到环境变量 - 编写循环遍历目标n值,每次完成输入、点击、结果提取流程
代码示例
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 # 定义要获取的n范围,示例为1到20 target_ns = range(1, 21) catalan_results = [] # 初始化Chrome浏览器 driver = webdriver.Chrome() try: for n in target_ns: # 打开目标页面 driver.get("http://www.kourbatov.com/math/calculators/catalannumberscalculator.htm") # 定位输入框并输入n值 input_field = driver.find_element(By.ID, "n") input_field.clear() input_field.send_keys(str(n)) # 点击计算按钮 calc_btn = driver.find_element(By.CSS_SELECTOR, 'input[type="submit"][value="Calculate"]') calc_btn.click() # 等待结果加载完成并提取 result_elem = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, "result")) ) catalan_num = result_elem.text.strip() catalan_results.append(catalan_num) print(f"第{n}个卡特兰数:{catalan_num}") finally: # 关闭浏览器 driver.quit() # 输出最终结果数组 print("卡特兰数列表:", catalan_results)
方法二:直接发送POST请求(更高效)
通过抓包分析网站的表单提交逻辑,用requests直接发送请求,避免浏览器开销。
操作步骤
- 安装依赖:
pip install requests beautifulsoup4 - 构造表单数据,循环发送POST请求,解析响应提取结果
代码示例
import requests from bs4 import BeautifulSoup target_ns = range(1, 21) catalan_results = [] site_url = "http://www.kourbatov.com/math/calculators/catalannumberscalculator.htm" for n in target_ns: # 构造表单提交数据 form_data = { "n": str(n), "submit": "Calculate" } # 发送POST请求 resp = requests.post(site_url, data=form_data) # 解析HTML获取结果 soup = BeautifulSoup(resp.text, "html.parser") result_div = soup.find("div", id="result") if result_div: catalan_num = result_div.text.strip() catalan_results.append(catalan_num) print(f"第{n}个卡特兰数:{catalan_num}") print("卡特兰数列表:", catalan_results)
注意事项
- 不要高频发送请求,避免触发网站反爬机制
- 若网站更新表单字段,需重新抓包调整
form_data参数
内容的提问来源于stack exchange,提问作者Goob
相关产品推荐
相关产品推荐

