2017-06-14 14 views
0

Webサイトの最初のテーブルのデータを解析するスクリプトを作成しました。私はテーブルを解析するためにxpathを使いました。 Btw、私はそれを使用せずに "tr"のタグの原因を使用していない私はまだ印刷されたときにコンソールで結果を見ることができます。スクリプトを実行すると、データはスクラップされますが、csvファイルの1行に印刷されます。私が作っている間違いを見つけることができません。これに関するいかなる入力も高く評価されます。ここで私が試したことは次のとおりです。テーブルのデータがcsvに1行で印刷される

import csv 
import requests 
from lxml import html 

url="https://fantasy.premierleague.com/player-list/" 
response = requests.get(url).text 
outfile=open('Data_tab.csv','w', newline='') 
writer=csv.writer(outfile) 
writer.writerow(["Player","Team","Points","Cost"]) 
tree = html.fromstring(response) 
for titles in tree.xpath("//table[@class='ism-table']")[0]: 
    # tab_r = titles.xpath('.//tr/text()') 
    tab_d = titles.xpath('.//td/text()') 
    writer.writerow(tab_d) 

答えて

1

各テーブルの行を順番に調べてループのレベルを追加したい場合があります。

このお試しください:、おかげで先生Robᵩ

rows = tree.xpath("(.//table[@class='ism-table'])[1]//tr") 
for row in rows: 
    items = row.xpath('./td/text()') 
    writer.writerow(items) 
+0

for titles in tree.xpath("//table[@class='ism-table']")[0]: for row in titles.xpath('./tr'): tab_d = row.xpath('./td/text()') writer.writerow(tab_d) 

または、おそらくこの:

table = tree.xpath("//table[@class='ism-table']")[0] for row in table.xpath('.//tr'): items = row.xpath('./td/text()') writer.writerow(items) 

それとも、最初のXPath式は、あなたのための行を見つけるかもしれないがあなたの堅牢なソリューションのために。両方のコードはちょうどロックする。 – SIM

関連する問題