Как правильно написать программу, которая извлекает все ссылки с веб-страницы? - PullRequest
0 голосов
/ 16 февраля 2019

Это часть курса Udacity. ПОИСК ДВИГАТЕЛЯ. Цель этого теста - написать программу, которая извлекает все ссылки с веб-страницы. На выходной программе должны возвращаться только LINKS. Но в моем случае программа возвращает все ссылкии "NONE" дважды. Я знаю, что ошибка во второй части программы после "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) 

1 Ответ

0 голосов
/ 16 февраля 2019

Во-первых, вы можете удалить свой оператор else в функции ALLlink(), поскольку он ничего не делает.

Кроме того, при сравнении с None следует использовать is not вместо !=:

while url != None:  # bad
while url is not None  # good

Тем не менее, я думаю, что ваша ошибка в вашей последней строке:

print ALLlink(page)

У вас в основном два оператора печати.Первый находится внутри вашей функции, а второй - в последней строке вашего скрипта.На самом деле вам не нужен последний оператор print, потому что вы уже печатаете в своей функции 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)
...