Пятое задание с названием «follow the chain» для меня оказалось совсем простым.
Переходим в исходный код страницы и видим подсказку: «urllib may help. DON’T TRY ALL NOTHINGS, since it will never end. 400 times is more than enough» — «urllib может помочь. Не пробуй все ничего, они никогда не закончатся. 400 раз более, чем достаточно». Чуть ниже этого комментария есть url с параметром nothing:
1 | <a href="linkedlist.php?nothing=12345"><img src="chainsaw.jpg" border="0" /></a> |
<a href="linkedlist.php?nothing=12345"><img src="chainsaw.jpg" border="0" /></a>
Нам нужно просто 400 раз сформировать url с параметром nothing и сделать запрос веб-страницы.
Вот моё решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | from urllib.request import urlopen nothing = '12345' address = 'http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=' final = [] for i in range(0, 400): nothing = urlopen(address + nothing).read().decode().split(' ')[-1] final.append(nothing) # используем генератор списков с условием final_final = [x for x in final if not x.isdigit()] print(final_final) # или так, если использовать filter print(list(filter(lambda x: not x.isdigit(), final))) |
from urllib.request import urlopen nothing = '12345' address = 'http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=' final = [] for i in range(0, 400): nothing = urlopen(address + nothing).read().decode().split(' ')[-1] final.append(nothing) # используем генератор списков с условием final_final = [x for x in final if not x.isdigit()] print(final_final) # или так, если использовать filter print(list(filter(lambda x: not x.isdigit(), final)))
Среди элементов списка будет одно название html-страницы. На вики с решениями в основном вся разница в отсеивании только текстовых элементов в финальном списке.