如何解决斯坦福哲学百科随机条目生成器显示标题与跳转页面不一致问题
问题根因
你调用的https://plato.stanford.edu/cgi-bin/encyclopedia/random是重定向接口:
- 第一次用
requests.get访问该地址时,服务端会自动跳转到随机选中的具体条目页面,你代码里存的还是原始的随机接口地址,没有保存跳转后的实际条目地址 - 当用户确认打开时,你再次用原始随机接口地址调起浏览器,相当于重新请求了一次随机接口,自然会得到和之前显示标题完全不同的新条目
修正后的代码
import requests from bs4 import BeautifulSoup import webbrowser while True: random_url = "https://plato.stanford.edu/cgi-bin/encyclopedia/random" reqs = requests.get(random_url) # 存储请求完成后实际跳转的条目地址,和抓取到的标题一一对应 real_entry_url = reqs.url soup = BeautifulSoup(reqs.text, "html.parser") for title in soup.find_all('title'): print(title.get_text() + "\n是否要查看该条目?\n输入Y确认,输入N重新获取") ans = input("").lower() if ans == "y": webbrowser.open(real_entry_url) break elif ans == "n": print("好的,正在重新获取\n") continue else: print("输入无效,程序退出") break
核心修改点
- 新增
real_entry_url变量存储requests请求完成后的最终跳转地址,避免重复调用随机接口 - 修复了原代码中
print语句的缩进错误,避免运行时触发语法异常 - 打开浏览器时使用实际的条目地址,保证显示的标题和跳转的页面完全匹配
- 优化了提示文案为中文,更符合使用习惯
内容的提问来源于stack exchange,提问作者noobie_forreal
相关产品推荐
相关产品推荐

