0

コードには 2 つの問題があります。1 つ目は、データがフィールド ヘッダーの下に適切に表示されないことです。2 つ目は、ループが html からデータの一部しか取得していないことです。コードは、すべて 1 つのページにある 14 のイベントを抽出しようとしますHTML コードは、ページ内のすべてのイベントで同一です (つまり、HTML が何度も繰り返されるだけです)。最初の問題は、結果のデータとフィールドの見出しにあります 。 SP,時間/秒,時間,距離,トレーナー,コメント

1,Bernies Toughguy,3,7/4F,3.63,23.91,(トレーナー: MN Fenwick),"コメント: EP,SnLd

2,Gentle Kewell,2,7/2,3.70,24.01 (1 1/4),(トレーナー: JM Liles),コメント: MidToRls,RanOn

3,Tintreach Harry,5,3/1,3.72,24.17(2),(トレーナー: ACB Green),"Comment: BmpRnUp&2,Crd 1/4"

4,Colorado Teegan,4,7/1,3.74,24.33 (2),(トレーナー: MN Fenwick),"Comment: Wide,EvCh"

5,Premarket Honey,6,6/1,3.68,24.51 (2 1/4),(トレーナー:ACB Green),"Comment: SAw,Crd2"

6,Malbay Roxy,1,7/2,3.81,24.57 (3/4),(トレーナー: MN Fenwick),"Comment: EP,SnLd"

ここで、各データは各フィールド (太字) の見出しの下に正しく配置されています。つまり、Finishing Position Dogname などです。ただし、プログラムを実行すると、次のようになります。

ヒレ,グレイハウンド,トラップ,SP,時間/秒,時間/距離, (トレーナー: MN Fenwick),"Comment: EP,SnLd"

1,Bernies Toughguy,3,7/4F,3.63,23.91,(トレーナー: JM Liles),"Comment: MidToRls,RanOn"

2,Gentle Kewell,2,7/2,3.70,24.01 (1 1/4),(トレーナー: ACB Green),コメント: "BmpRnUp& 1/4"

3,Tintreach Harry,5,3/1,3.72,24.17(2),(トレーナー:ACB Green),"Comment:"BmpRnUp&2,Crd 1/4"

4,Colorado Teegan,4,7/1,3.74,24.33 (2),(トレーナー: MN Fenwick),"Comment: Wide,EvCh"

5,Premarket Honey,6,6/1,3.68,24.51 (2 1/4),(トレーナー: JM Liles),"Comment: SAw,Crd2"

6,Malbay Roxy,1,7/2,3.81,24.57 (3/4),(トレーナー: BD O'sullivan),"Comment: EP,SnLd"

フィールド名を格納する必要がある最初の行で、フィールド名の一部を取得していますが、最後のいくつかはトレーナーの名前とコメントに置き換えられていることに注意してください (イタリック体)。さまざまな分野のデータをアップします。

2 番目の問題は、ループの繰り返しに関係している可能性があります。既に述べたように、ページ上の HTML は非常に均一ですが、何らかの理由でプログラムを実行すると、6 番目のイベントで 5 番目の参加者 (Avenue Bound) でデータが停止します。 (The 11.51) カードで、実際にはカードに 14 のイベントがあるため、残りのイベントでループが失敗しているため、ループが壊れているように見えますが、HTML に明確な理由が見当たりません。以下はコードです。私はコードの多くのバリエーションを試しましたが、それをクラックすることはできません.ループ内の反復回数を決定するためにコードを含める必要があるかもしれないと思いましたが、PythonループはCループとは異なり、これは初めてです.何かを見つけます。どんな助けでも大歓迎です。

import csv
from urllib import urlopen
from bs4 import BeautifulSoup
html = urlopen ("http://www.gbgb.org.uk/resultsMeeting.aspx?id=132115")

bsObj = BeautifulSoup(html)

one = bsObj.findAll("li", {"class": "first essential fin"})
two = bsObj.findAll("li", {"class": "essential greyhound"})

three = bsObj.findAll("li", {"class": "trap"})   
four = bsObj.findAll("li", {"class": "sp"})
five = bsObj.findAll("li", {"class": "timeSec"})
six = bsObj.findAll("li", {"class": "timeDistance"})
seven = bsObj.findAll("li", {"class": "essential trainer"})
eight = bsObj.findAll("li", {"class": "first essential comment"})

firstessentialfin = [a.getText().strip() for a in one]
essentialgreyhound = [b.getText().strip() for b in two]
trap = [c.getText().strip() for c in three]
sp = [d.getText().strip() for d in four]
timeSec = [e.getText().strip() for e in five]
timeDistance = [f.getText().strip() for f in six]
essentialtrainer = [g.getText().strip() for g in seven]
firstessentialcomment = [h.getText().strip() for h in eight]

with open('dogfile.csv', 'wb') as csvfile:
    writer = csv.writer(csvfile, delimiter=",")
    for c in   zip(firstessentialfin,essentialgreyhound,trap,sp,timeSec,timeDistance,esssentialtrainer, firstessentialcomment):
        writer.writerow(c)
4

0 に答える 0