2016-08-15 11 views
1

私はデータスクレイピングの新人です。何らかの理由で私の質問に誤りがある場合は事前にお詫び申し上げます。Python 3でSelenium Webdriverを使用してWebサイトの「ポップアップ」ボックスのデータを取得する方法

航空会社のページをスクラップしようとしています(link、飛行機のデータ(例:航空機のタイプ)を取得するために)私は飛行機(出発空港と到着空港/ data)、フライトプロポーザルの画面を表示

2番目の画面では、「直行便」というリンクがあります。これをクリックするコード行も含まれていますので、新しいポップアップウィンドウ

しかし、 "html = browser.page_source"(BeautifulSoupで解析)でダウンロードしようとすると、明らかにダウンロード中です。コンテンツのみ前のページの「直行便」をクリックする前に、ポップアップボックス(screenshotsを参照)から情報を選択します。

voosdiretos=browser.find_elements_by_class_name('plusBus') 
voo=voosdiretos[0] 
voo.click() 

html = browser.page_source 
soup = BeautifulSoup(html) 

soup_string=str(soup) 
print('soup_to_string') 

解決策を探しました。それらは通常、window_handleの使用をお勧めしますが、私はここで動作させる方法はありません(このポップアップウィンドウは実際の新しいポップアップではないと思われますが、JavaScriptのポップアップウィンドウのようなものです)。

誰もこの情報をスクラップする方法に関する提案はありますか?

は、[EDIT]

バッタの提案に続いて、私は要素を取得しようとしました:

elem_=browser.find_elements_by_css_selector('.informacoesLightbox bgGrid borderIe8') 
print(len(elem_)) 
print(type(elem_)) 

出力は0と(何も返されなかった)でした。

提案がありますか?

答えて

1

あなたが指しているが、クラス--informacoesLightbox bgGrid borderIe8を持つdivに含まれているので、情報は新しいポップアップウィンドウではありません。直接飛行をクリックすると、表示属性が表示されます。あなたは以下の

CSSなどの名前、内側のdivは何のIDを持っていないので、このデータの残りの部分は、CSSやXPathのロケータを使用してDIV得ることができます -

Flight Name - "div[class='boxVoo'] > span[class='stsLeft']" 
Operator Name - "div[class='boxVoo'] > span[class='stsRight']" 
Time Duration - "div[class='boxVoo'] div[class='boxInfoLight'] div[class='timeDuration']" 
Aircraft Type - "div[class='boxVoo'] div[class='rightboxInfoLight'] div:nth-of-type(1)" 
Tag - "div[class='boxVoo'] div[class='rightboxInfoLight'] div:nth-of-type(2)" 
+0

非常バッタありがとうございます。より多くの情報を入力して質問を編集しました。 –

+0

上記のCSSが追加されました。 – Grasshopper

関連する問題