2016-12-28 5 views
1

マップ上の各セルのディメンションをこのajax websiteから抽出しようとしましたが、各セルの詳細はポップアップ時にマウスポイントセル上にPythonを使用してajaxウェブページ上でマウスのホバーボックスのコンテンツをスクラップする方法

私はPython Selenium Webdriverとphantomjsを使用してpage_sourceを読み込んで抽出しましたが、データが見つかりませんでした。私はfirebugを使って、.jsonファイルを探しましたが、そのコンテンツはロードされているかもしれませんが、見つかりませんでした。

サイトを見て、マップ上の各セルをポイントするときに移動したホバーボックスからコンテンツを掻き取る方法をお勧めします。

P.S:私はstackoverflowといくつかのサイトの両方で無駄な調査をしていました。

+0

各セルを指し示したときにホバーボックスがずれる要素を調べるにはどうしたらいいですか? – Joe4Jesus

+0

'20 x 30'のように' Size'値だけを削り取る必要がありますか? – Andersson

+0

私はホバリングボックスの内容全体を掻きたい。しかし、ちょうどサイズの値を取得する方法の提案も役立ちます。私は出展者リストから他の情報を得ることができるからです。 – Joe4Jesus

答えて

0

実際にはAJAXはありませんが、は、ページ上の各項目(ブース)に<g>要素を含むオブジェクトです。必要な情報を取得するには、<g>の上にマウスのホバーを実行する必要があります。次のコードでは、ほとんどの項目の説明を得ることができます(g要素数の2/3程度)...ページのコンテキストについてはわかりませんので、ページ上の項目の外観の規則性を判断できません:

from selenium import webdriver as web 
from selenium.webdriver.common.action_chains import ActionChains 
import time 
from selenium.webdriver.support.ui import WebDriverWait as wait 
from selenium.webdriver.support import expected_conditions as EC 
from selenium.webdriver.common.by import By 

driver = web.Chrome() 
driver.maximize_window() 
driver.get('http://www.aptaexpo.com/apta2017/public/eventmap.aspx?shmode=E&thumbnail=1') 
time.sleep(5) 
driver.find_elements_by_tag_name('polygon')[0].click() # [1] to choose another hall 
time.sleep(5) 

list_of = driver.find_elements_by_xpath('//div[@class="leaflet-overlay-pane"]/*[name()="svg"]/*[name()="g"]') 
for item in list_of: 
    action = ActionChains(driver) 
    action.move_to_element(item) 
    try: 
     description = wait(driver, 3).until(EC.visibility_of_element_located((By.XPATH, '//div[*[contains(text(), "Booth:")]]'))).text 
     print(description) 
     action.perform() 
    except: 
     action.perform() 

問題を解決した場合は、この回答にチェックマークを付けてください。それ以外の場合は、私のコードで直面するかもしれない新しい問題を知っているか、新しい質問チケットを作成してください。

+0

ありがとうございました。私はあなたの方法とコードを使ってそれを完成させることができました。私はあなたの答えをどう受け入れるのですか? – Joe4Jesus

関連する問題