Razor
Ноя. 27, 2013 20:05:15
Доброго времени суток!
Ситуация такая: захотелось поучится писать парсеры, но впал в ступор, ибо не представляю, с чего начать даже.К примеру, имеется сайт и мне необходимо получить названия всех PHP файлов. Как это реализовать? Методом перебора? Регулярные выражения? Как, господа и немногочисленные дамы?
doza_and
Ноя. 27, 2013 20:18:51
Razor
имеется сайт
Где он имеется? У вас есть url сайта или его коды на своей машине?
Razor
Ноя. 27, 2013 20:26:01
doza_and
Razor
имеется сайт
Где он имеется? У вас есть url сайта или его коды на своей машине?
Имеется URL сайта. Я хочу понять, каким образом реализовывается такой парсер. Как искать файлы, имен которых не знаешь?
Можно, разумеется, использовать регулярные выражения, типа “\.php”, но как реализовать поиск через URL?
py.user.next
Ноя. 27, 2013 21:00:06
для начала у тебя есть программа (функция), которая управляет исполнителем
он умеет открывать ссылки, закачивать с них данные, передавать эти данные другому исполнителю и принимать от него ответ
второй исполнитель также управляется программой (функцией), которая находится внутри первого исполнителя
он умеет из данных выделять фрагменты, искать в них ссылки и пути, передавать эти ссылки и пути третьему исполнителю и принимать от него ответ
третий исполнитель также управляется программой (функцией), которая находится внутри второго исполнителя
он умеет из пути выделять имя файла, из ссылки выделять имя файла
тут всё дело в том, что кажется, будто нужно написать несколько функций, потому что так проще, но это не так; когда тебе понадобится в процессе разработки сохранить эти имена куда-то, либо обработать их, либо сделать что-то ещё, то первоначальный вариант из одних функций сломается (его нужно будет переписывать, либо оставлять в нечитаемом виде)
doza_and
Ноя. 28, 2013 17:30:20
:)
Razor
Имеется URL сайта
Razor
названия всех PHP файлов
С математической точки зрения задача некорректна. Можно легко построить сайт у которого будет бесконечное число не повторяющихся ссылок.
Razor
Ноя. 28, 2013 18:23:51
Ладно, к сути вопроса:
http://habrahabr.ru/post/70330/
Захотелось поупражняться, вытаскивая исходники сайтов. Никакого криминала - чистая практика. Поупражняюсь в парсере и удалю.
В принципе, задача без этой ссылки и правда кажется некорректной. Однако исходники я таки выкачал (кои потом удалил). Хотелось понять, как выкачать файлы, не зная их названий и не используя регулярных выражений. Посмотреть возможности Питона.
Можно, конечно выкачать все, методом перебора, но это совсем уж)
try:
urllib.request.orlopen('http://{0}/.svn/entries'.format(url))
except urllib.error.HTTPError:
continue
P.S. А реализовал чтением файла
entries.