如何获取新打开网页的链接并存储为变量,实现动态requests.get()
解决方法
方案一:用Selenium替代webbrowser+pyautogui(推荐)
webbrowser模块仅负责调用系统浏览器,没有提供和浏览器交互的API,没法直接获取页面URL。而Selenium是专门的浏览器自动化工具,既能替代pyautogui完成输入操作,还能直接读取当前页面的URL存入变量,稳定性和可靠性远高于原方案。
示例代码:
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC def get_new_page_url(initial_url, search_content, search_selector): # 初始化Chrome浏览器(需提前安装对应版本的chromedriver) driver = webdriver.Chrome() try: # 打开初始页面 driver.get(initial_url) # 显式等待搜索栏加载完成,避免因页面未加载完全报错 search_box = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.CSS_SELECTOR, search_selector)) ) # 输入搜索内容并回车 search_box.send_keys(search_content + Keys.ENTER) # 等待页面跳转完成(这里以URL变化为判断条件,可根据实际调整) WebDriverWait(driver, 10).until( EC.url_changes(initial_url) ) # 获取新页面的URL并返回 return driver.current_url finally: # 无论成功失败都关闭浏览器 driver.quit() # 调用示例:替换成你的初始地址、搜索内容和搜索栏选择器 new_url = get_new_page_url( initial_url="https://www.google.com", search_content="python requests", search_selector="input[name='q']" ) # 现在可以直接用requests.get(new_url) print(new_url)
方案二:基于webbrowser+pyautogui的兼容方案(不推荐)
如果必须保留原工具链,只能通过模拟操作浏览器地址栏,将URL复制到剪贴板后再读取到变量中。这种方法依赖浏览器快捷键和窗口状态,兼容性差,仅作为临时替代方案。
示例代码:
import webbrowser import pyautogui import time import pyperclip def get_new_page_url(): # 打开初始页面 webbrowser.open("https://www.google.com") time.sleep(3) # 等待页面加载完成 # 定位搜索栏并输入内容(需自行调整坐标或用pyautogui.locateOnScreen定位) pyautogui.click(x=400, y=400) # 替换为实际搜索栏坐标 pyautogui.typewrite("python requests", interval=0.1) pyautogui.press("enter") time.sleep(3) # 等待新页面加载 # 选中地址栏(Chrome/Firefox通用快捷键Ctrl+L) pyautogui.hotkey("ctrl", "l") time.sleep(0.5) # 复制地址栏内容到剪贴板 pyautogui.hotkey("ctrl", "c") time.sleep(0.5) # 从剪贴板读取URL到变量 return pyperclip.paste() # 调用获取URL new_url = get_new_page_url() print(new_url)
内容的提问来源于stack exchange,提问作者Blakely Schreiber
相关产品推荐
相关产品推荐

