2016-10-21 11 views
1

Monitoringタブの下にネストされたdiv要素に分け入手できます:Pythonの使用 http://www.pajak.go.id/statistik-amnestiは、どのように私はすべてのテキストは、親リンクの下の1つの要素ID

、私はhttps://monitoringamnesti.pajak.go.id/viewer/dashboard?dashboardguid=90a16bf8-d418-4ed4-8160-7f883f601dd0&v=636126392121123334&style=Default

私のコードの左上のテーブルを抽出しようとしています:

import selenium.webdriver as driver 

browser = driver.Chrome() 

url= "https://monitoringamnesti.pajak.go.id/viewer/public/dashboard?name=Monitoring_Amnesti_Pajak" 

browser.get(url) 

all_text = browser.execute_script("returndocument.getElementById('SimpleDataGrid-viewport').textContent") 

ただし、すべてのテキストはまとめて表示されます。テーブルのすべての情報をリスト/データフレームとして取得する方法はありますか?

HTMLコード:

<div id="SimpleDataGrid-viewport" class="datagrid-viewport" style="width: 120px; height: 376px;"> 
<div id="SimpleDataGrid-spacer-clip" class="datagrid-spacer-clip clip _hidden" style="width: 22px; height: 23px;"> 
    <div id="SimpleDataGrid-spacer" class="datagrid-spacer" style="width: 22px; height: 23px;"> 
     <div class="row"> 
      <div class="cell blank" style="border-bottom-color: rgb(0, 153, 195); width: 22px; height: 11px;">&nbsp; 
      </div> 
     </div> 
    </div> 
</div> 
<div id="SimpleDataGrid-head-clip" class="datagrid-head-clip clip" style="width: 120px; margin-left: 0px; height: 23px;"> 
<div id="SimpleDataGrid-head" class="datagrid-head" style="top: 0px; left: 0px; width: 552px;"> 
    <div class="row"> 
     <div class="cell column0 text sortable" data-type="text" data-index="0" data-sortorder="unsorted" style="border-bottom-color: rgb(0, 153, 195); width: 161px; height: 11px;">Jenis<em class="unsorted" data-sortorder="unsorted"></em> 
     </div> 
     <div class="cell column1 number sortable" data-type="number" data-index="1" data-sortorder="unsorted" style="border-bottom-color: rgb(0, 153, 195); width: 52px; height: 11px;">Juli<em class="unsorted" data-sortorder="unsorted"></em> 
     </div> 
     <div class="cell column2 number sortable" data-type="number" data-index="2" data-sortorder="unsorted" style="border-bottom-color: rgb(0, 153, 195); width: 58px; height: 11px;">Agustus<em class="unsorted" data-sortorder="unsorted"></em> 
     </div> 
     <div class="cell column3 number sortable" data-type="number" data-index="3" data-sortorder="unsorted" style="border-bottom-color: rgb(0, 153, 195); width: 73px; height: 11px;">September<em class="unsorted" data-sortorder="unsorted"></em></div> 
     <div class="cell column4 number sortable" data-type="number" data-index="4" data-sortorder="unsorted" style="border-bottom-color: rgb(0, 153, 195); width: 58px; height: 11px;">Oktober<em class="unsorted" data-sortorder="unsorted"></em> 
     </div> 
+0

関連するHTMLコードを投稿できますか?質問に記載されているリンクは、ログイン認証情報を要求しています。 –

+0

こんにちは、私はそこにメインリンクを追加しました。ここにhtmlコードをコピーするのは時間がかかりすぎるようです。 –

答えて

0

Sudharsanが述べたように、あなたが要求したURLは、ログイン資格情報を、私たちは、コンテンツ、あなたの参照を見ることができません。

セレンを使用してJavascriptを実行するのではなく、Seleniumに関心のあるテーブルをプルするように指示してから、興味のある形式に出力してください。

あなたが提供したコードに基づいて、CSSセレクターがグリッドの各行にあるすべての「列」を見つけているのを見て、あなたのニーズを満たすために何かを試すことができると思います。

# print the content of each row in the table (this will include the headers) 
for cell in browser.find_elements_by_css_selector("div[id='SimpleDataGrid-head'] div.row div.cell"): 
    print(cell.text) 
+0

"table"が "tr"行の "table"要素でない場合、最初の数行を示す出力を提供することができれば、行を識別するパスを用意するのに役立つでしょう。 –

+0

ご協力ありがとうございます。テーブルはテーブル要素ではありません。そこにhtmlの一部を追加しました。 –

+0

私はすべてのセルを見つけるためにCSSセレクターで上記の私の答えを編集しました。最初のループがセレクタ "div [id = 'SimpleDataGrid-head'] div.row"を使用して "行"を検索してから、各行に対してrow.find_elements_by_css_selector()を使用してセルを出力するまで、 "div.cell") –

関連する問題