我对代码有两个问题。首先,数据在字段标题下没有正确显示,其次循环只是从html中获取部分数据。代码试图提取14个事件,这些事件都在一个页面上的页面。页面中的每个事件的HTML代码都是相同的(即html只是一遍又一遍地重复)。第一个问题在于结果数据和字段标题。我应该得到这个: 的翅片,灰狗,陷阱,SP,时间/秒,时间,距离,教练,注释
1,Bernies Toughguy,3,7 / 4F,3.63,23.91,(培训师:M N Fenwick),“评论: EP,SNLD
2,Gentle Kewell,2,7 / 2,3.70,24.01(1 1/4),(培训师:J M Liles),评论: MidToRls,RanOn
3,Tintreach Harry,5,3 / 1,3.72,24.17(2),(培训师:A C B 绿色),“评论:BmpRnUp& 2,Crd 1/4”
4,Colorado Teegan,4,7 / 1,3.74,24.33(2),(培训师:M N 芬威克),“评论:宽,EvCh”
5,上市蜂蜜,6,6 / 1,3.68,24.51(2 1/4),(培训师:A C B 绿色),“评论:SAw,Crd2”
6,Malbay Roxy,1,7 / 2,3.81,24.57(3/4),(培训师:M N Fenwick),“评论: EP,SNLD“
这里每个数据正确地落在每个字段(粗体)标题下,即完成位置Dogname等。但是当我运行程序时,我得到了这个:
Fin,Greyhound,Trap,SP,时间/秒,时间/距离, (培训师:MN Fenwick),“评论:EP,SnLd”
1,Bernies Toughguy,3,7 / 4F,3.63,23.91,(培训师:J M Liles),“评论: MidToRls,RanOn“
2,Gentle Kewell,2,7 / 2,3.70,24.01(1 1/4),(培训师:A C B 绿色),评论:“BmpRnUp& 1/4”
3,Tintreach Harry,5,3 / 1,3.72,24.17(2),(培训师:A C B 绿色),“评论:”BmpRnUp& 2,Crd 1/4“
4,Colorado Teegan,4,7 / 1,3.74,24.33(2),(培训师:M N 芬威克),“评论:宽,EvCh”
5,Premarket Honey,6,6 / 1,3.68,24.51(2 1/4),(培训师:J M Liles),“评论:SAw,Crd2”
6,Malbay Roxy,1,7 / 2,3.81,24.57(3/4),(培训师:B D O'sullivan),“评论:EP,SnLd”
请注意,在应该包含字段名称的第一行中,我获得了一些字段名称,但最后几行被替换为教练名称和注释,(斜体)这会产生混乱的影响各个领域的其余数据。
第二个问题可能与循环迭代有关。我已经说过页面上的HTML非常统一但是由于某种原因,当我运行程序时,数据在第5个参与者(Avenue Bound)上停止,卡上的第6个事件(11.51),当卡上实际上有14个事件,因此循环失败了剩余的事件。所以循环似乎正在崩溃但我看不到HTML中的任何实际原因.Below是我尝试了很多代码的代码,但我似乎无法破解它。我确实认为我可能必须包含代码来确定循环中的迭代次数但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)