如何使用Python获取浏览器地址栏动态变更后的URL?
能否用Python获取浏览器地址栏变更后的URL?
当然可以,关键得看URL变更是怎么产生的,分两种情况处理:
情况1:URL变更是页面重定向导致的
如果是服务器端重定向或者页面自动跳转,直接用requests库就能拿到最终地址,示例代码:
import requests initial_url = "https://www.yelp.com/search?find_desc=tacobell" # allow_redirects=True 会自动跟踪所有重定向 response = requests.get(initial_url, allow_redirects=True) final_url = response.url print("变更后的URL:", final_url)
情况2:URL变更是前端JS动态修改的(比如你遇到的Yelp场景)
这种情况普通HTTP请求抓不到变更后的地址,得用能模拟浏览器的工具,比如Selenium,它会完整复现浏览器加载页面的过程,包括JS操作地址栏的行为。示例代码:
from selenium import webdriver from selenium.webdriver.chrome.options import Options # 可选:启用无头模式,不用弹出浏览器窗口 chrome_options = Options() chrome_options.add_argument("--headless=new") driver = webdriver.Chrome(options=chrome_options) driver.get("https://www.yelp.com/search?find_desc=tacobell") # 直接获取浏览器地址栏当前的URL final_url = driver.current_url print("变更后的URL:", final_url) driver.quit()
简单总结:重定向导致的URL变化用requests就行;前端JS修改地址栏的情况,就得用Selenium这类浏览器自动化工具。
内容的提问来源于stack exchange,提问作者Johnny Choi
相关产品推荐
相关产品推荐

