代码只运行一次就停止了,不是循环吗?

2024-09-30 14:34:40 发布

您现在位置:Python中文网/ 问答频道 /正文

f = open('C:/Users/Sikander/Desktop/bradpitt.html')
for line in f.readlines():
    p = line.partition('<a href="http://')
    url = p[2].partition('">')
    l = p[1] + url[0] + url[1]
    print(l)
    line = p[2]

这是我的代码,这个代码只运行一次停下来。但是我希望我的代码再次运行,直到行==''。我该怎么做?我正在打印网页的链接。我的代码得到第一个链接,而没有得到其他链接。如果一个页面有4个链接,它将只打印第一个链接和停止和其他3个链接不打印。你知道吗

我该怎么办?你知道吗


Tags: 代码inurlfor链接htmllineopen
3条回答

既然我还不能评论。。。你知道吗

我将添加到@wtpoo。我认为情况就是这样,在html文档中,您不可能总是得到回车符。所以readline()按预期工作。你知道吗

我要添加的唯一一个附加内容是说明https://

您忘了缩进应该在循环中的后续行。你知道吗

也许更容易理解为什么您的代码在脚本中没有达到预期的效果,而不是在控制台中。有时>>>的存在会模糊压痕

f = open('C:/Users/Sikander/Desktop/bradpitt.html')
for line in f.readlines():
p = line.partition('<a href="http://')
url = p[2].partition('">')
l = p[1] + url[0] + url[1]
print(l)
line = p[2]

我猜你想要的是这样的:

f = open('C:/Users/Sikander/Desktop/bradpitt.html')
for line in f.readlines():
    head, sep, tail = line.partition('<a href="http://')
    urlhead, urlsep, urltail = tail.partition('">')
    l = sep + head + urltail
    print(l)

这是因为html页面只是一个大的行。 也许你可以用这样的东西来循环:

f = open('C:/Users/Sikander/Desktop/bradpitt.html')
text = f.read()
while('<a href="http://' in text):
    #process it
    text = text[text.index('<a href="http://')+16:]

我建议你使用美丽的汤模块收集网页中的所有链接。你知道吗

相关问题 更多 >