什么可以导致while循环停止?

时间:2014-10-31 01:56:01

标签: python while-loop

我在网页上写了一个函数,即爬虫(url)。虽然是真的,但如果没有任何进展,它应该继续运行。我有一个返回整个函数,它返回,所以我知道它停止了。我为每个圆圈打印了所有可以打印的内容,一切看起来都很完美。只是因为某种原因停止了,我不知道。

逻辑是我有一个初始urls[]

每个循环

urls

中读取网址

如果网址不在parent中,请将其放入,否则请继续

来自网址的

抓取工具links,使用函数抓取工具

将网址放入parent,将links放入children

将链接不在父级newUrl

如果到达urlsurls=newurls, newurls=null

的末尾

但由于某种原因,循环只能运行30次以上,我检查了那里还有很多儿童链接,所以我不明白为什么它会停止。

newUrl=[]
parent = []
children =[]
cloud =[]
i=0
n=0

while n<100:
    n+=1
    url = urls[i]
    if url in parent:
        i += 1
        continue
    (links,titles) = crawler(url)
    parent.append(url)
    links = list(set(links))
    children.append(",".join(links))
    cloud.append(titles)

    links = [link for link in links if link not in parent]
    newUrl= newUrl+links # is there anyone realy have a look on code
    print(len(parent)) # I guess noone did
    i += 1
    if i == len(urls):
        urls = list(set(newUrl))
        newUrl = []
        i=0
 print (n)

1 个答案:

答案 0 :(得分:0)

在n达到100之前唯一可能导致while循环退出的事情是异常。

如果您的程序内存不足,可能会发生异常,因为爬虫函数调用自身的无限递归(不太可能在您的新代码中限制为100),或者您的索引i超出了urls数组边界,您的程序逻辑可能导致的,或者由于其他一些难以预测的原因。