代码运行一次并停止,不循环?

时间:2016-05-19 16:56:22

标签: python python-3.x

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]

这是我的代码,这段代码运行一次并停止。但我希望我的代码再次运行,直到行==&#39; &#39 ;.我该怎么做?我正在打印网页上的链接。我的代码获得了第一个链接,但没有得到其他链接。如果页面有4个链接,它将只打印第一个链接并停止,而其他3个链接不打印。

我该怎么办?

3 个答案:

答案 0 :(得分:3)

这是因为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:]

我建议你使用漂亮的汤模块来收集网页上的所有链接。

答案 1 :(得分:0)

您忘记缩进应该在循环中的后续行。

可能更容易理解为什么您的代码没有在脚本中而不是在控制台中执行预期的操作。有时,>>>的存在可能会使缩进模糊不清

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)

答案 2 :(得分:0)

因为我还不能评论......

我要加入@wtpoo。我认为情况就是这样,你不会总是在html文件中得到一个回车。所以https://按预期工作。

我要添加的唯一补充是帐户{{1}}

相关问题