2017-06-24 5 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] 

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

    print(item.text) 

driver.quit() 

表形式の意味は次のとおりです。しかし、私は以下のようにいくつかの列の代わりに単一の列にデータを取得しています。

enter image description here

+0

フォワード、ミッドフィルダー、ゴールキーパー、ディフェンダーの選手を指定する必要はありませんか?あなたがデータをループする方法では、このチャーを与えることはありません。 また、セレンは一般にあまりにも重いので、最後のオプションとしてのみ使用します。あなたが解析しているこの特定のページはうまく構成されているので、私はBeautifulSoupの使用をお勧めします。 –

+0

「表形式」とはどういう意味ですか?それを指定してください。 –

+0

彼は表を提示したいと思っていますが、あなたが全テーブルの行を掻き取ったときに知っているように、範囲のある他のループを使用しています...私は... cloumsをgetすべてのITEMSまたはVALUEをそれぞれの尊敬リストにまとめておきます。パンダを使って一緒に叩く...または各clomnの値とキーの後に... format printまたはtoは同じrandと時間ですべてを出力します。 ..私もまた...いいえbs4を意味する?あなたは本当のパーサーが必要です – scriptso

答えて

1

それはあなたに個別に各プレイヤーのためのリストが表示されます

for item in table_data.find_elements_by_xpath(".//tr"): 
    print(item.text.split()) 

を試してみてください。正しく「デゴアのような空白で名前をキャッチするために

...(your previous code)... 
data=[] 
for item in table_data.find_elements_by_xpath(".//tr"): 
    data.append(item.text.split()) 

format_table = '{:8s}' + 4 * '{:>10s}' 
for lst in data: 
    print(format_table.format(*lst)) 

別のバージョン(:

お知らせ、.find_elements_by_xpathでそのタグは、()あなたはこのように読める表を作ることができ 、さらに

を変更されました"):

data=[] 
temp=[] 
for item in table_data.find_elements_by_xpath(".//tr"): 
    for i in item.find_elements_by_xpath('td'): 
     temp.append(i.text) 
    data.append(temp) 
    temp=[] 
+0

あなたの堅牢な答えのためにドミトリーFialkovskiyありがとう。それは私が期待したことをした。参考までに、セレンのためでなければ、私はbs4またはxpathを使ってそのテーブルを解析する方法を知っています。私はテーブルを擦るためにセレンを使用したことがないので、立ち往生しました。それは私がそのページを選んだからです。もう一度ありがとう。 – SIM

+0

あなたは大歓迎です、男=) –

+0

こんにちはDmitriy Fialkovskiyさん、最後にこのスレッドから見てみたいと思うかもしれません。スプリット機能はここで少し問題を引き起こします。プレイヤーの名前がスペースで区切られている場合、「de Gea」は新しい列を作成して別々の名前を表示しますが、その表の列番号は常に4でなければなりません。リンクをたどると、より明確になります。このためのあなたの心の任意の回避策!前もって感謝します。 "https://www.dropbox.com/s/79frhafppxs32cn/player_list.csv?dl=0" – SIM

関連する問題