Seiteninhalt, wie Sie erwähnt haben, von JavaScript
Code generiert wird, so dass Sie es nicht in erster Seite Quelle zu finden sein können und das Hinzufügen von selbst time.sleep(3)
konnte nicht genug sein ... Sie müssen Warten Sie einige Zeit, bis die erforderlichen Daten auf der Seite vorhanden sind. Versuchen Sie unter Code zu verwenden:
from selenium import webdriver as web
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
url="http://www.sgx.com/wps/portal/sgxweb/home/company_disclosure/stockfacts?page=2&code=5TG&lang=en-us"
PJ = r'/xxx/MyPythonScripts/phantomjs_mac'
driver = webdriver.PhantomJS(PJ)
driver.get(url)
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,'//div[starts-with(@id, "mainns_")]/iframe')))
WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, '//div[@class="data-point-container section-break"]/table')))
html = driver.page_source
assert "Total Revenue" in html
Mit diesem Code, den Sie auf 10 Sekunden warten, bis werden (Sie können Timeout erhöhen, wenn Sie benötigen), bis sie benötigt table
Element Präsenz. Wenn es nicht innerhalb von 10 Sekunden gerendert wird, erhalten Sie TimeOutException
Was ist das Ergebnis Ihrer Skriptausführung? Haben Sie versucht, 'Chrome' oder' Firefox' zu verwenden, um die Ausführung zu visualisieren? – Andersson
Nun, ich habe gerade versucht, nach einem Text wie 'Total Revenue' zu suchen, aber keinen. Alle von ihnen sind nur in Javascript, die ich nicht wirklich verstehe. Ich benutze PhantomJS, nicht Chrome oder Firefox Webdriver. Davon abgesehen, habe ich auch versucht, Chrome-Treiber und das Ergebnis ist genau das gleiche – Jake