2017-04-30 6 views
0

Ich bin sehr neu in Python und ich bin auf der Suche folgende Website zu kratzen: LinkGet URL in Selenium Python

Ich denke, dass Selen das richtige Werkzeug sein könnte, und ich begann folgenden Code zu schreiben:

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) 

So weit so gut, es funktioniert. Allerdings ist der Rückgabewert von browser.current_url nicht ganz das, was in der URL-Leiste meines Browsers angezeigt wird. Ich meine, die der Rückgabewert des Skripts ist:

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

jedoch die URL im Browser mir diesen einen zeigt sich hier:

//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

Jetzt frage ich mich, wie halten zu bekommen Diese Adresse ?!

Vielen Dank!

+0

Könnten Sie Ihre Python-Version, python-Selen-Version, firefoxdriver Version hinzufügen und Firefox-Version auf den Post? Ich konnte Ihr Problem nicht reproduzieren mit Python3, Python-Selen 2.53, Firefox 2.53 und Firefox 45.9.0. Das Ausführen Ihrer Skripts gibt mir eine längere URL, wie Sie es erwartet haben. –

+0

danke für deine antwort. Meine Python-Version ist 3.6.1, Selen ist 3.4.0, Firefox ist 53, ich habe keine Ahnung, wie man die Version des Firefox-Treibers herausfinden kann, aber es ist das neueste. Ich habe Selen erst vor ein paar Tagen installiert. –

Antwort

1

Haben Sie zwischen dem Überprüfen der vom Skript zurückgegebenen URL und der URL, die vom Browser angezeigt wird, eine andere Anfrage gestellt. Die nach der Keys.RETURN gesendete Anforderungs-URL fügt der URL eine Sitzungs-ID hinzu, die möglicherweise der Grund dafür ist, dass Sie eine andere URL erhalten.

Ich habe dieses Skript

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() 

Keypress Code aus dem Code selbst kopiert. Ich erhalte eine identische URL sowohl aus dem Browser und den Skript

Script gibt mir diese URL - Link Browser gibt mir diese gleiche URL - Copied Manually

+0

perfekt, vielen Dank! Es klappt! Derselbe Code gibt mir verschiedene Ergebnisse, je nachdem, welchen Treiber ich verwende ... was bedeutet, dass der Firefox-Treiber mir die kurze Adresse gibt, der Chrome-Treiber den langen und den, den ich brauche ... –

+0

Sie können diese Antwort als akzeptiert markieren antworte, wenn dein Problem damit gelöst wurde. Vielen Dank – demouser123