使用Python获取浏览器的当前URL

13
我正在运行一个HTTP服务器,根据浏览器URL中的尺寸提供一个位图,例如localhost://image_x120_y30.bmp。我的服务器在无限循环中运行,我想在用户请求BITMAP时随时获取URL,并且最终可以从URL提取图像尺寸。
这里问的问题:如何在Python网页中获得当前URL?并没有解决我的问题,因为我正在无限循环中运行,并且希望不断获取当前URL,以便向用户提供请求的BITMAP。

可能是如何在Python网页中获取当前URL?的重复问题。 - Liam
6个回答

11
如果要使用Selenium进行网页导航:
from selenium import webdriver
driver = webdriver.Firefox()
print (driver.current_url)

我正在运行Python 2.7,但是出现了以下错误: ImportError: No module named selenium - StealthTrails
Selenium兼容2.7和3.4版本。您需要先安装此软件包,然后在代码中导入它。尝试使用pip install selenium - Andersson
1
现在它可以工作,但是它会打开一个新的 Firefox 浏览器窗口,我想要的是获取浏览器的 URL。 - StealthTrails
1
你可以使用 driver.get('put_your_site_name') 访问所需网站的页面,然后在每次循环迭代后使用 driver.current_url 获取页面 URL。附注:请提供有关脚本如何工作/应该如何工作的更多信息,或者只需显示现有代码的部分。 - Andersson
目前我是通过解析HTTP请求来获取所需的内容,但我想知道是否可能直接从浏览器获取URL,这样我就可以解析它以获取所请求的位图尺寸。 - StealthTrails
1
我正在使用Chrome浏览器,但是在使用self.driver.current_url时却得到了data:, - bhattraideb

3

您可以通过以下方式获取当前 url: path_info = request.META.get('PATH_INFO') http_host = request.META.get('HTTP_HOST')。 将这两个值加在一起即可获得完整的 url。 基本上,request.META 会返回一个包含大量信息的字典。您可以尝试一下。


1
我刚刚解决了一个类似的问题。我们一直在使用Splinter遍历页面(您需要下载Splinter和Selenium)。当我遍历页面时,我需要定期获取当前页面的URL。我使用以下命令来实现 new_url = browser.url 下面是我的代码示例。
我使用以下代码来实现此操作。
##import dependencies
from splinter import browser
import requests


## go to original page 
browser.visit(url)

## Loop through the page associated with each headline
for headline in titles:
    print(headline.text)
    browser.click_link_by_partial_text(headline.text)
## Now that I'm on the new page, I need to grab the url
    new_url = browser.url
    print(new_url)
## Go back to original page
    browser.visit(url)

0
以下是我在Django中使用的解决方案。
例如,如果浏览器URL为https://www.example.com/dashboard
try:
    from urlparse import urlparse
except ImportError:
    from urllib.parse import urlparse

frontend_url = request.META.get('HTTP_REFERER')
url = urlparse(frontend_url)
print (url)
# ParseResult(scheme='https', netloc='example.com', path='/dashboard', params='', query='', fragment='')

0
    Hello you can use below code in order to achieve URL from open browser
    
    import os
    import webbrowser
    import pyperclip
    import time
    import keyboard
    import pygetwindow as gw
    import pyautogui
    
    @app.route("/")
    def redirect_to_authorization():
        redirect_url = f"https://www.google.com"
        webbrowser.open(redirect_url)
        time.sleep(5)
        browser_window = gw.getActiveWindow()
        browser_window.activate()
        pyautogui.hotkey('ctrl', 'l')
        time.sleep(2)
        pyautogui.hotkey('ctrl', 'c')
        keyboard.press_and_release('ctrl + c')
        time.sleep(0.5) 
        url = pyperclip.paste()
        print(url)
        # os.system("taskkill /f /im chrome.exe")
        index = url.find('code=')
        if index != -1:
            code = url[index + len('code='):]
            print("Code:", code)
        # os.system("taskkill /f /im chrome.exe")
        return {"Token" : code}

# Or you can use below code too

    @app.route("/CodeTwo")
    def redirect_to_authorization():
        redirect_url = f"https://www.google.com"
        webbrowser.open(redirect_url)
        time.sleep(5)
        active_window = gw.getActiveWindow()
        if active_window is not None:
            title = active_window.title
            if " - Google Chrome" in title:
                # Extract the URL from the title
                url = title.split(" - Google Chrome")[0]
                return {"Token" : url}

根据目前的写法,你的回答不明确。请编辑以添加额外的细节,帮助他人理解这如何回答所提出的问题。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - Community

-7
你可以使用 requests 模块:
import requests


link = "https://stackoverflow.com"
data = requests.request("GET", link)
url = data.url

2
这个解决方案并不能满足他的需求。同时,你将 url 作为参数传递给请求时,应该传递变量 _link_,所以它也有错误。 - Paulo Fabrício

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接