2017-05-11 7 views
5

Ich kratze Inhalte der Zillow Website zu kratzen.Kann nicht einige Elemente von zillow Website

Ex- https://www.zillow.com/homedetails/689-Luis-Munoz-Marin-Blvd-APT-508-Jersey-City-NJ-07310/108625724_zpid/

Das Problem ist, ich nicht Inhalt der Preis- und Steuer Geschichte kratzen kann. Ich dachte, dass sie JavaScript-Elemente sind, die geladen werden, wenn die Seite geladen wird, und daher versucht, Selen zu verwenden, aber ich kann sie immer noch nicht bekommen. Folgendes ist, was ich versucht habe.

-Code

phistory = soup.find("div",{"id": "hdp-price-history"}) 
print phistory 

Html

<div class="loading yui3-widget yui3-async-block yui3-complaintstable yui3-hdppricehistory yui3-hdppricehistory-content" id="hdp-price-history"> 
    div class="zsg-content-section zsg-loading-spinner_lg"></div> 
</div> 

Dies ist das äußerste Element, aber hat keine Elemente inside.Also versucht soup.find_all("table",class_ = "zsg-table yui3-toggle-content-minimized") die keiner ergibt.

+0

Können Sie den Schaber Code posten? –

+0

Relevanter Code ist oben enthalten. –

Antwort

3

Sie können versuchen, bis <table> erzeugt erforderlich warten und wurde sichtbar:

from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait as wait 
from selenium.webdriver.support import expected_conditions as EC 

driver.get("https://www.zillow.com/homedetails/689-Luis-Munoz-Marin-Blvd-APT-508-Jersey-City-NJ-07310/108625724_zpid/") 
table = wait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, '//div[@id="hdp-price-history"]//table'))) 
print(table.text) 

Ausgang:

DATE EVENT PRICE $/SQFT SOURCE 
05/03/17 Listed for sale $750,000+159% $534 KELLER WILLIAM... 
06/15/11 Sold $290,000-38.3% $206 Public Record 
10/14/05 Sold $470,000 $334 Public Record 

Sie können auch analysieren, ohne BeautifulSoup, z.B.

print(table.find_element_by_xpath('.//td[text()="Listed for sale"]/following::span').text) 

Ausgang:

$750,000 

oder

print(table.find_element_by_xpath('.//td[text()="Sold"]/following::span').text) 

Ausgang:

$290,000 
+0

Danke Andersson! –

+0

Ich versuche, die gleiche Technik hier [Link] (https://www.zillow.com/homedetails/1102-Woodland-Ave-Pittsburgh-PA-15212/11498396_zpid/) zu verwenden, aber es scheint nicht zu funktionieren. Ich habe auch versucht, ID und Element zu verwenden. Folgendes ist, was ich versucht habe 'wait = WebDriverWait (Browser, 20) Tabelle = wait.until (EC.visibility_of_element_located ((By.XPATH, '// Abschnitt [@ id =" yui_3_18_1_2_1494945298474_1290 "] // Tabelle'))) ' –

+0

' id' von 'section' ist dynamisch (es ändert sich jedes Mal, wenn Sie die Seite aktualisieren), so dass Sie es nicht in' XPath' verwenden können. Versuchen Sie '// h2 [text() =" Preisverlauf "]/following-gleichgeordnete :: table' – Andersson

Verwandte Themen