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,它只会打印大量的列表。
答案 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所提到的,你需要在某处终止你的循环。