美丽的汤Python循环迭代未完成

时间:2015-09-04 08:19:19

标签: python html5 web web-scraping bs4

我对代码有两个问题。首先,数据在字段标题下没有正确显示,其次循环只是从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)

0 个答案:

没有答案