如何使此代码不打印整个列表,只打印一个名称和时间

时间:2016-09-11 19:58:10

标签: python

from lxml import html
import requests

page = requests.get('http://www.runningzone.com/wp-content/uploads/2016/09/Turtle-Krawl-Overall-Results-2016.html')
tree = html.fromstring(page.content)

x=2
while True:
    xpathName = "/html/body/div[2]/table/tbody/tr['x']/td[4]//text()"
    xpathTime = "/html/body/div[2]/table/tbody/tr['x']/td[9]//text()"
    name = tree.xpath(xpathName)
    time = tree.xpath(xpathTime)
    print (name), (time)
    x += 1

所以我试图使用xpath将这个名称和时间打印出来。由于某种原因,代码打印出名称和时间的完整列表,即使我非常确定名称和时间的xpath应该打印一个名称。如果我用一个数字替换'x'部分,它只打印一个名称。但是,如果我告诉代码打印'x',它在每个循环中用不同的数字替换x,它只会打印大量的列表。

1 个答案:

答案 0 :(得分:1)

'x'不会将x变量插入到字符串中。你需要做这样的事情:

xpathName = "/html/body/div[2]/table/tbody/tr[%d]/td[4]//text()" % (x,)
xpathTime = "/html/body/div[2]/table/tbody/tr[%d]/td[9]//text()" % (x,)

另外,正如@grael所提到的,你需要在某处终止你的循环。