漂亮的汤Python循环迭代未完成
我对代码有两个问题。首先,数据没有在字段标题下正确显示,其次,循环仅从html中获取部分数据。代码试图提取网站上一个页面上的14个事件。页面中的每个事件的html代码都相同,(即html只是一次又一次地重复)。第一个问题在于生成的数据和字段标题。我应该得到以下信息: 鳍、灰狗、陷阱、SP、时间/秒、时间、距离、教练、评论 1,Bernies Toughguy,3,7/4F,3.63,23.91,(培训师:M N Fenwick),“评论: EP,SnLd 2,温柔的凯威尔,2,7/2,3.70,24.01(1 1/4),(培训师:J M Liles),评论: 拉农中部 3,哈利,5,3/1,3.72,24.17(2),(培训师:A C B 绿色),注释:BmpRnUp&2,Crd 1/4 科罗拉多州蒂根,4,7/1,3.74,24.33(2),(培训师:M N 芬威克),“评论:宽,埃维奇” 5,上市前蜂蜜,6,6/1,3.68,24.51(21/4),(培训师:A C B 绿色),“注释:SAw,Crd2” 6,Malbay Roxy,1,7/2,3.81,24.57(3/4),(培训师:M N Fenwick),“评论: EP,SnLd“ 在这里,每个数据都正确地落在每个字段(粗体)标题下,即终点位置Dogname等。但是,当我运行程序时,我得到以下信息: 鳍,灰狗,陷阱,SP,时间/秒,时间/距离,(教练:M N Fenwick),“评论:EP,SnLd” 1,Bernies Toughguy,3,7/4F,3.63,23.91,(培训师:J M Liles),“评论: 中托尔斯,拉农“ 2,温柔的凯威尔,2,7/2,3.70,24.01(1 1/4),(培训师:A C B 绿色),注释:“BmpRnUp&1/4” 3,哈利,5,3/1,3.72,24.17(2),(培训师:A C B 绿色),注释:“BmpRnUp&2,Crd 1/4” 科罗拉多州蒂根,4,7/1,3.74,24.33(2),(培训师:M N 芬威克),“评论:宽,埃维奇” 5,上市前蜂蜜,6,6/1,3.68,24.51(21/4),(培训师:J M Liles),“评论:SAw,Crd2” 6,马尔贝·罗克西,1,7/2,3.81,24.57(3/4),(教练:B/D O'sullivan),“评论:EP,SnLd” 请注意,在第一行中,应该包含字段名称,我得到了一些字段名称,但最后几行被培训师的名称和注释(斜体)替换,这会将各个字段中的剩余数据弄乱 第二个问题可能与循环迭代有关。正如我已经说过的,页面上的HTML非常统一,但由于某种原因,当我运行程序时,数据在第五个参与者(大道方向)上停止,在第六个事件中(11.51)在卡片上,当卡片上实际有14个事件时,循环会使其余的事件失败。因此,循环似乎要崩溃,但我在HTML中看不到任何明显的原因。下面是代码,我尝试了代码的许多变体,但我似乎无法破解它。我确实认为我可能必须包含代码来确定I的数量循环中的迭代,但是python循环与C循环不同,而且我对这一点还不熟悉。非常感谢任何帮助漂亮的汤Python循环迭代未完成,python,html,web,web-scraping,bs4,Python,Html,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,温柔的凯威尔,2,7/2,3.70,
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)
关于您丢失的数据,您是否能够从文件而不是网络下载源代码并对其进行解析?如果无法解决问题,您会怎么想?嗨,Mathias,我尝试了您的建议,但似乎没有任何效果。我查看了html,但在那里找不到任何内容。我不知道bs4有如此多的缺点。您是否尝试打印立即检查整个
bsObj
,以检查它是否与您的输入一致?也许尝试一下可以解决您的问题。