2016-11-11 2 views
0

Ich versuche, die resultierende Seite von dieser Seite zu kratzen:Python Screen Scraping eine Form, die Javascript verwendet Anfrage bearbeiten

http://data.philly.com/philly/property/

Ich bin mit 254 W Ashdale St als mein Versuch Eintrag, wenn ich das tun in meinem Browser verweist es mich auf das Ergebnis, das ich im HTML suche (gleiche URL).

Python-Anfragen ist erfolgreich setzen die Adresse, die ich in der Ergebnisseite, aber ich bin nicht in der Lage, die Besitzer Informationen, die ich versuche zu kratzen. Ich habe mit Selenium und Phantomjs versucht, nichts, was ich tue, arbeitet.

Ich war auch verwirrt über die Formularaktion, es schien nur die gleiche URL wie die Seite auf dem Formular ist.

Ich schätze jede und alle Ratschläge oder Hilfe!

Antwort

0

Selenium kümmert sich um praktisch alles, finde nur die Elemente, gib die Informationen ein, finde den Knopf, klicke darauf, gehe dann zum Besitzer, klicke darauf und nimm die Informationen, die du brauchst.

import selenium 
from selenium import webdriver 

driver = webdriver.Chrome() 
driver.get('http://data.philly.com/philly/property/') 

#enter the street address 
driver.find_element_by_name('LOC').send_keys('254 W Ashdale St') 
#click on the submit button 
driver.find_element_by_name('sendForm').click() 

#find the owner 
owner_tag = driver.find_elements_by_tag_name('td')[2] 
owner = driver.find_elements_by_tag_name('td')[2].text 
print(owner) 

#click on the owner 
owner_tag.find_element_by_tag_name('a').click() 

#get the table with the relevant info  
rows = driver.find_element_by_tag_name('tbody').find_elements_by_tag_name('tr') 

#get the row with the sale prices 
sale_prices = list() 
for row in rows: 
    sale_prices.append(row.find_elements_by_tag_name('td')[4].text) 

print('\n'.join(sale_prices)) 

Ausgang:

FIRSTNAME LASTNAME 
$123,600.00 
$346,100.00 
[..] 
$789,500.00 
Verwandte Themen