单击提交按钮后使用 Python 获取新 URL

Posted

技术标签:

【中文标题】单击提交按钮后使用 Python 获取新 URL【英文标题】:Using Python to get new URL after clicking Submit button 【发布时间】:2019-02-10 22:25:42 【问题描述】:

我正在使用谷歌地图来获取我正在搜索的地址的 GPS 坐标。我想在提交后获取 URL,以便我可以从 URL 中提取 GPS 坐标。但是我的网址只显示:https://www.google.com/maps

        url = "http://maps.google.com/"
        locationAdrs = '957 ASHBY GROVE SW ATLANTA' 
        browser = webdriver.Chrome(executable_path="C:/Users/joe/AppData/Local/Programs/Python/Python37-32/PyOn/chromedriver")
        browser.get(url)
        address = browser.find_element_by_xpath('//*[@id="searchboxinput"]')
        address.send_keys(locationAdrs)
        address.submit()
        url = browser.current_url
        print(url) 

【问题讨论】:

【参考方案1】:

您必须重新确认实际访问的链接是什么,因为您输入的链接可能与最终将您连接到最终目的地的 DNS 路由不对应。然后,您必须等待浏览器更新,然后才能返回您正在访问的新地址:

url = "https://www.google.com/maps"
locationAdrs = '957 ASHBY GROVE SW ATLANTA'
browser.get(url)
address = browser.find_element_by_xpath('//*[@id="searchboxinput"]')
address.send_keys(locationAdrs)
# address.submit() - doesn't seem to do the right thing.
url = browser.current_url # have initial url on same format before click is made to move away
browser.find_element_by_xpath('//*[@id="searchbox-searchbutton"]').click()
while url == browser.current_url:
    time.sleep(2)
url = browser.current_url
print(url)

输出: https://www.google.com/maps/place/957+Ashby+Grove+SW,+Atlanta,+GA+30314,+USA/@33.7500669,-84.4211224,17z/data=!3m1!4b1!4m5!3m4!1s0x88f5035d3de5336f:0x9ca82913b5ecbde!8m2!3d33.7500669!4d-84.4189284

【讨论】:

我仍然收到google.com/maps 的网址。在您的 while 循环中,您将 url 与 driver.current_url 进行比较,我没有驱动程序变量,它会产生运行时错误,说明未定义驱动程序变量。那应该是浏览器变量吗?当我将其更改为浏览器变量时,我得到了相同的网址:google.com/maps 是的,在你的情况下应该是browser.current_url。如果您最终得到“google.com/maps”,请将您的初始 url 设置为此 rxact 字符串。目标是保持在 while 循环内,直到它发生变化。我将更新我的建议以自主执行此操作。 请注意 Google 地图的网址可能是“google.com/maps”、“www.google.com/maps”、“maps.google.com”中的任何一个,我敢肯定许多其他的变化。这些都是到“同一个地方”的 DNS 路由,但拼写在 while 循环中很重要。在离开之前将 url 重新设置为 current_url 返回的任何内容应该可以解决该问题。我已经对答案进行了适当的更改。如果 current_url 不起作用,您可以使用 page_sorce。 它现在对我有用,问题是我使用的是 url = 'maps.google.com/maps' 但应该使用 url = "google.com/maps"

以上是关于单击提交按钮后使用 Python 获取新 URL的主要内容,如果未能解决你的问题,请参考以下文章

单击提交后如何获取选定的单选按钮以显示特定的隐藏 div?

通过colorbox提交Ajax帖子后更新div?

单击提交按钮后无法重定向到其他页面

使用 BeautifulSoup Python 单击按钮后获取价值

通过单击提交按钮在 Django 网站中运行 Python 脚本

单击按钮后切换到打开的新浏览器 [Python][Selenium]