我试图打印所有网球运动员在下面的网址。但是split函数只打印一个玩家的名字,尽管其他玩家的名字可以从下面的split函数name1.split(“>;”)[1].split(“>;”)中检索到
import time
import urllib2
from urllib2 import urlopen
import datetime
def Tennis():
try:
australianOpen = urllib2.urlopen('http://www.ausopen.com/en_AU/players/profiles.html').read()
names1 =australianOpen.split('</div><div id="section_A" class="sectionHeading"><div class="men">A</div><div class="women">A</div></div><div class="section"><div class="men">')[1].split('</a></div></div></div></div>')[0]
for Eachnames in names1 :
Eachnames = names1.split('">')[1].split('</a><a href="')[0]
print Eachnames
except Exception,e:
print str(e)
Tennis()
这个问题与行
Eachnames = names1.split('">')[1].split('</a><a href="')[0]
有关,您在这里所做的是将字符串拆分为子字符串数组,然后使用[1]选择1:st元素。由于在找到第一个名称后没有修改变量names1
,因此将反复选择相同的名称。一个简单的修改是但是打印输出会出错,因为您的搜索标准都是错误的(除非您想要jibberish,比如half URL adressen et.c.)。我认为一个好的简单的解决方案是使用正则表达式。 一个简单的regexp来捕获名称,不需要特殊字符
一个使用regexp的稍微简化的程序是
希望这有帮助
只需添加names1=names1[names1.find(Eachnames)+len(Eachnames):]
相关问题 更多 >
编程相关推荐