【问题标题】:Get URL in Selenium Python在 Selenium Python 中获取 URL
【发布时间】:2017-04-30 16:50:44
【问题描述】:

我对 python 很陌生,我正在寻找以下网站:Link

我认为 Selenium 可能是正确的工具,我开始编写以下代码:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

path='http://planning.hackney.gov.uk/Northgate/PlanningExplorer/generalsearch.aspx'

browser = webdriver.Firefox()
browser.get(path)

elem = browser.find_element_by_id('txtPostCode')
elem.clear()
elem.send_keys("E9 7JP")
elem.send_keys(Keys.RETURN)

print (browser.current_url)

到目前为止一切顺利,它有效。但是,browser.current_url 的返回值与我浏览器的 url 栏中显示的不太一样。我的意思是脚本的返回值是:

//planning.hackney.gov.uk/Northgate/PlanningExplorer/generalsearch.aspx

但是浏览器中的 url 在这里向我显示了这个:

//planning.hackney.gov.uk/Northgate/PlanningExplorer/Generic/StdResults.aspx?PT=Planning%20Applications%20On-Line&SC=Postcode%20is%20E9%207JP&FT=Planning%20Application%20Search%20Results&XMLSIDE=/Northgate/PlanningExplorer/SiteFiles/Skins/Hackney/Menus/PL.xml&XSLTemplate=/Northgate/PlanningExplorer/SiteFiles/Skins/Hackney/xslt/PL/PLResults.xslt&PS=10&XMLLoc=/Northgate/PlanningExplorer/Generic/XMLtemp/j5jzxiwxklgslnam4qffypw5/052dd052-3993-4f10-83aa-dd0c6c326676.xml

现在我想知道如何获得这个地址?!

非常感谢!

【问题讨论】:

  • 你能把你的 Python 版本、python-selenium 版本、firefoxdriver 版本和 firefox 版本添加到帖子中吗?我无法使用 python3、python-selenium 2.53、firefoxdriver 2.53 和 Firefox 45.9.0 重现您的问题。运行你的脚本会给我更长的 URL,就像你预期的那样。
  • 感谢您的回答。我的 python 版本是 3.6.1,selenium 是 3.4.0,Firefox 是 53,我不知道如何找出 Firefox 驱动程序的版本,但它是最新的。我几天前才安装了 selenium..

标签: python selenium web-scraping


【解决方案1】:

在检查脚本返回的 URL 和浏览器显示的 URL 之间,您是否提出过任何其他请求。在Keys.RETURN 之后发送的请求 URL 添加了带有 URL 的会话标识符,这可能是您获得不同 URL 的原因。

我有这个脚本

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
chromepath='chrome_driver_path' //change this to your chromedriver path
driver = webdriver.Chrome(chromepath)

driver.get('http://planning.hackney.gov.uk/Northgate/PlanningExplorer/generalsearch.aspx')

print(driver.current_url)

elem = driver.find_element_by_id('txtPostCode')
elem.clear()
elem.send_keys("E9 7JP")
elem.send_keys(Keys.RETURN)

print (driver.current_url)

driver.quit()

按键代码已从您的代码本身复制。我从浏览器和脚本中获得了相同的 URL

脚本给了我这个 URL - Link 浏览器给了我同样的 URL - Copied Manually

【讨论】:

  • 完美,非常感谢!有用!根据我使用的驱动程序,相同的代码会给我不同的结果...这意味着 Firefox 驱动程序给了我短地址,chrome 驱动程序给了我长地址和我需要的地址...
猜你喜欢
  • 2013-04-05
  • 1970-01-01
  • 2015-08-28
  • 1970-01-01
  • 2021-04-11
  • 1970-01-01
  • 2019-06-06
  • 2021-11-25
相关资源
最近更新 更多