这是Udacity课程WEB SEARCH ENGINE的一部分。本测验的目的是编写一个程序来提取网页中的所有链接。在输出程序上必须仅返回LINKS。和“无”两次。我知道程序的第二部分在“ WHILE”之后和在“ ELSE”之后出现错误。但是我不知道我该在那写什么。
def get_next_target(page):
start_link = page.find('<a href=')
if start_link == -1:
return None,0
else:
start_quote = page.find('"', start_link)
endquo = page.find('"',start_quote + 1)
url = page[(start_quote + 1) : endquo]
return url,endquo
page = 'i know what you doing summer <a href="Udasity".i know what you doing summer <a href="Georgia" i know what you doing summer '
def ALLlink(page):
url = 1
while url != None:
url,endquo = get_next_target(page)
if url:
print url
page = page[endquo:]
else:
print ALLlink(page)
答案 0 :(得分:0)
首先,您可以在else
函数中删除ALLlink()
语句,因为它没有执行任何操作。
此外,与None
相比,您应该使用is not
而不是!=
:
while url != None: # bad
while url is not None # good
也就是说,我认为您的错误出在您的最后一行:
print ALLlink(page)
您基本上有两个打印语句。第一个位于函数内部,第二个位于脚本的最后一行。确实,您不需要那里的最后一条打印语句,因为您已经在ALLlink()
函数中进行打印。因此,如果将行更改为ALLlink(page)
,我认为它会起作用。
如果确实要在此处打印,则可以修改函数以将URL存储在数组中,然后打印该数组。像这样:
def ALLlink(page):
urls = []
url = 1
while url is not None:
url, endquo = get_next_target(page)
if url:
urls.append(url)
page = page[endquo:]
return urls
print ALLlink(page)