2016-06-24 19 views
0

Erste Frage hier gestellt.Kratzen Sie die Rückkehr eines JS Onclick-Funktion

Ich muss die URL, die von einer JS Onclick-Funktion einer Website generiert wird, scrappen. Also denke ich, dass Selenium den Job machen könnte, aber ich kann mir nicht vorstellen, wie ich das programmieren soll, ohne andere Tabs/Fenster zu öffnen und nicht einmal zu wissen, ob es möglich ist.

Hier ist die Onclick JS-Funktion:

‚tr class = "linhares" onclick = "javascript: GRV (0,1,1);">

So brauchen eine im Grunde die URL zurückgegeben von dieser Funktion.

Hoffe, du kannst mir helfen, danke!

+0

Es scheint ein wenig seltsam, dass die Funktion GRV() nur eine URL zurückgibt. Es druckt es nirgends, leitet den Browser oder etwas ähnliches um? – user1337

+0

Tatsächlich öffnet es eine neue Registerkarte mit der dynamisch generierten URL. Es ist wie ein verstecktes Ziel, das sich öffnet. – leo04

+0

Ist die Funktion grv() immer dieselbe oder versuchen Sie den allgemeinen Fall zu lösen, eine solche Funktion zu scrapen? – user1337

Antwort

0

Sehen Sie ein Beispiel über neue Fenster-Schalt-und wechseln Sie wieder unten:

driver.get("your-application-URL") 
time.sleep(3) 
window_before = driver.window_handles[0] 
windowHandlesAllBefore = driver.window_handles 
linkElements = driver.find_elements_by_css_selector("[onclick='javascript:grv(']") 

for aLink in linkElements: 
    aLink.click() 
    time.sleep(3) 
    newWindowHandle = list(set(driver.window_handles) - set(windowHandlesAllBefore))[0] 
    print(newWindowHandle) 
    driver.switch_to.window(newWindowHandle) 
    print(driver.current_url) 
    driver.close() 
    driver.switch_to.window(window_before) 
+0

Danke für das Teilen! Da ich nur die URL des neuen Fensters/Tabs benötige, gibt es eine Möglichkeit, den Browser ohne Stil (keine Bilder, keine schweren Elemente) zu betreiben, damit er so schnell wie möglich geladen wird. – leo04

+0

@ leo04 Sie müssen nur den Webdriver zu PhantomJS wechseln. Siehe Beispiel [hier] (http://stackoverflow.com/questions/13287490/is-there-a-way-to-use-phantomjs-in-python) – Buaban

+0

Nochmals vielen Dank, Buaban. Ich habe Probleme mit der fünften Zeile und deinem Code. InvalidSelectorException: Nachricht: ungültiger Selektor: Ein ungültiger oder ungültiger Selektor wurde angegeben – leo04