Форум сайта python.su
2
Доброго времени суток!
Ситуация такая: захотелось поучится писать парсеры, но впал в ступор, ибо не представляю, с чего начать даже.К примеру, имеется сайт и мне необходимо получить названия всех PHP файлов. Как это реализовать? Методом перебора? Регулярные выражения? Как, господа и немногочисленные дамы?
Офлайн
253
RazorГде он имеется? У вас есть url сайта или его коды на своей машине?
имеется сайт
Офлайн
2
doza_and
Razor
имеется сайт
Где он имеется? У вас есть url сайта или его коды на своей машине?
Офлайн
857
для начала у тебя есть программа (функция), которая управляет исполнителем
он умеет открывать ссылки, закачивать с них данные, передавать эти данные другому исполнителю и принимать от него ответ
второй исполнитель также управляется программой (функцией), которая находится внутри первого исполнителя
он умеет из данных выделять фрагменты, искать в них ссылки и пути, передавать эти ссылки и пути третьему исполнителю и принимать от него ответ
третий исполнитель также управляется программой (функцией), которая находится внутри второго исполнителя
он умеет из пути выделять имя файла, из ссылки выделять имя файла
тут всё дело в том, что кажется, будто нужно написать несколько функций, потому что так проще, но это не так; когда тебе понадобится в процессе разработки сохранить эти имена куда-то, либо обработать их, либо сделать что-то ещё, то первоначальный вариант из одних функций сломается (его нужно будет переписывать, либо оставлять в нечитаемом виде)
Офлайн
253
:)
Razor
Имеется URL сайта
RazorС математической точки зрения задача некорректна. Можно легко построить сайт у которого будет бесконечное число не повторяющихся ссылок.
названия всех PHP файлов
Офлайн
2
Ладно, к сути вопроса: http://habrahabr.ru/post/70330/
Захотелось поупражняться, вытаскивая исходники сайтов. Никакого криминала - чистая практика. Поупражняюсь в парсере и удалю.
В принципе, задача без этой ссылки и правда кажется некорректной. Однако исходники я таки выкачал (кои потом удалил). Хотелось понять, как выкачать файлы, не зная их названий и не используя регулярных выражений. Посмотреть возможности Питона.
Можно, конечно выкачать все, методом перебора, но это совсем уж)
try: urllib.request.orlopen('http://{0}/.svn/entries'.format(url)) except urllib.error.HTTPError: continue
Офлайн