2017-06-24 18 views
0

セレニウムを使ってPythonでスクリプトを書くと、私はそれを実行すると私は奇妙な繰り返し形式でデータをスクレイプします。私は、スクリプトで言及されているWebページから最初のテーブルを解析することを期待していました。ここで繰り返して印刷されたスクラップされたデータ

は、私が最初にテーブルを解析すると、これまでに試したスクリプトです:

from selenium import webdriver 

driver = webdriver.Chrome() 

driver.get("https://fantasy.premierleague.com/player-list/") 

table_data = driver.find_elements_by_xpath("//table[@class='ism-table']")[0] 

list_rows = [] 

for items in table_data.find_elements_by_xpath(".//tr"): 

    list_cells = [] 

    for item in items.find_elements_by_xpath(".//td"): 

     list_cells.append(item.text) 

    list_rows.append(list_cells) 

    print(list_rows) 

driver.quit() 

あなたがリンクをたどる場合、私は取得していた結果を見ることができます。 「https://www.dropbox.com/s/c4n08jt2k7amx4j/Parsed%20table%20data.txt?dl=0

データが格納されている範囲内

HTML要素、:

<table class="ism-table"> 
     <colgroup> 
      <col class="ismCol1"> 
      <col class="ismCol2"> 
      <col class="ismCol3"> 
      <col class="ismCol4"> 
     </colgroup> 
     <thead> 
      <tr> 
       <th>Player</th> 
       <th>Team</th> 
       <th>Points</th> 
       <th>Cost</th> 
      </tr> 
     </thead> 
     <tbody> 
      <tr> 
       <td>Courtois</td> 
       <td>Chelsea</td> 
       <td>141</td> 
       <td>£5.9</td> 
      </tr> 

答えて

0

あなたは、各内部ループの後list_cellsの値をドロップしない:

list_rows = [] 

for items in table_data.find_elements_by_xpath(".//tr"): 

    list_cells = [] 

    for item in items.find_elements_by_xpath(".//td"): 

     list_cells.append(item.text) 

    list_rows.append(list_cells) 
    list_cells=[] 

print(list_rows) 
+0

私はそれは間違いなく動作しますが、応答)=あなたのため –

+0

おかげで物事をミックスしていない場合、それが動作するはずです。基本的に、私はあなたのアイデアを私が後にしていた。私の貼り付けられたコードにはインデントが付いていませんでした。再度、感謝します。私は私が探していたものを表示するために私の更新されたコードを貼りつけるつもりです。 – SIM

0

これは私が期待していた答えです。

from selenium import webdriver 

driver = webdriver.Chrome() 

driver.get("https://fantasy.premierleague.com/player-list/") 

table_data = driver.find_elements_by_xpath("//table[@class='ism-table']")[0] 

list_rows = [] 

for items in table_data.find_elements_by_xpath(".//tr"): 

    list_cells = [] 

    for item in items.find_elements_by_xpath(".//td"): 

     list_cells.append(item.text) 

    list_rows.append(list_cells) 

for data in list_rows: 

    print(data) 

driver.quit() 
関連する問題