ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Парсинг структуры сайта, используя метаданные svn
  #1  
Старый 06.10.2009, 12:39
Аватар для oRb
oRb
Members of Antichat - Level 5
Регистрация: 09.05.2008
Сообщений: 304
Провел на форуме:
7875940

Репутация: 2362
По умолчанию Парсинг структуры сайта, используя метаданные svn

Не совсем релиз, ибо кода мало.
Возможно кому-то будет полезен.
Рекурсивно обходит всю директорию, которую вы указали.
Написан на питоне.
PHP код:
#!/usr/bin/python
import sysurllib

def parse
(path):
    
fh urllib.urlopen(url path '.svn/entries')
    
prev ''
    
while True:
        
line fh.readline()
        if 
not line:
            break
        
line line.strip()
        if 
prev:
            if 
line.lower() == 'dir':
                print 
path prev '/'
                
parse(path prev '/')
            
elif line.lower() == 'file':
                print 
path prev
        prev 
line

url 
raw_input("URL: http://")
if 
url[-1] == '/':
    
url url[:-1]
url "http://" url
print 
parse('/'
Пример:
Код:
$ ./svn_parser.py
URL: http://wiki.postgresql.org/skins/

/Simple.php
/chick/
/chick/IE50Fixes.css
/chick/IE60Fixes.css
/chick/main.css
/chick/IE55Fixes.css
/monobook/
/monobook/user.gif
/monobook/Opera6Fixes.css
/monobook/Opera7Fixes.css
/monobook/required.gif
/monobook/audio.png
/monobook/wiki.png
/monobook/rtl.css
/monobook/IE50Fixes.css
/monobook/video.png
/monobook/IE60Fixes.css
[и так далее]
__________________
включи голову
 
Ответить с цитированием

  #2  
Старый 17.04.2010, 10:23
Аватар для login999
login999
Постоянный
Регистрация: 12.06.2008
Сообщений: 654
Провел на форуме:
4512757

Репутация: 973


По умолчанию

Хз зачем, но покрутил сам ))+proxy+вывод в файл
Немного удобнее выводит список файлов, если папка не пуста то буит приблизительно так :
Код:
URL (with scheme):http://wiki.postgresql.org/skins/
========================================
Simple.php
/chick/
      IE50Fixes.css
      IE60Fixes.css
      main.css
      IE55Fixes.css
/monobook/
         user.gif
         Opera6Fixes.css
         Opera7Fixes.css
         required.gif
         audio.png
         wiki.png
         rtl.css
         IE50Fixes.css
         video.png
         IE60Fixes.css
         headbg.jpg
         IE70Fixes.css
         bullet.gif
         file_icon.gif
         IE55Fixes.css
         mail_icon.gif
         document.png
         magnify-clip.png
         IEMacFixes.css
         lock_icon.gif
         wiki-indexed.png
         external.png
         KHTMLFixes.css
         news_icon.png
         link_icon.gif
         main.css
         discussionitem_icon.gif
CologneBlue.php
Skin.sample
/modern/
Код:
#!/usr/bin/python 
#-*-encoding:UTF-8-*-
 
import sys
import urllib2

def parse(url, path, write=True):
    try:
        fh = urllib2.urlopen("{url}{path}.svn/entries".format(url=url, path=path))
    except urllib2.HTTPError:
        #print u"Файл не найден : {url}{path}.svn/entries".format(url=url, path=path)
        pass
    else:
        prev = ""
        line = "NOT_EMPTY"
        while True:
            lines = iter(fh.readlines())
            if not line: 
                break 
            else:
                for line in lines:
                    line = line.strip() 
                    if prev: 
                        if line.lower() == 'dir': 
                            print "{path}{prev}/".format(path=path, prev=prev)
                            if write:
                                out_file.write("{path}{prev}/\n".format(path=path, prev=prev))
                            parse(url, "{1}{0}/".format(prev, path))
                        elif line.lower() == 'file': 
                            print "{path}{prev}".format(path=" "*(len(path)-1), prev=prev)
                            if write:
                                out_file.write("{path}{prev}\n".format(path=" "*(len(path)-1), prev=prev))
                    prev = line 

url = raw_input("URL (with scheme):") 
if url.endswith("/"): 
    url = url.rstrip("/")
proxy = raw_input("PROXY? (HTTP/HTTPS, ip:port):").strip()
if proxy:
    proxy_handler = urllib2.ProxyHandler(
                                         { 
                                          "http": "http://{0}/".format(proxy),
                                          "https": "http://{0}/".format(proxy)
                                         }
                                       )
    opener = urllib2.build_opener(proxy_handler)
    urllib2.install_opener(opener)
write = raw_input("Write to file?(y/n):").strip()
if write == "y":
    write = True
    out_file = open("work_log.txt", "a")
    out_file.write("{0}\n".format(url))
    out_file.write("{0}\n".format("="*80))
else:
    write = False
print u"="*40
parse(url, "/", write)
out_file.close()

Последний раз редактировалось login999; 17.04.2010 в 10:48..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Большой архив статей по раскрутке и оптимизации сайтов _-Ramos-_ Статьи 12 13.06.2010 23:56
Reviews CMS w3r3.w01f PHP, PERL, MySQL, JavaScript 33 12.04.2010 23:18
Шпаргалки для сертификатов по Битрикс Liar PHP, PERL, MySQL, JavaScript 7 30.05.2009 10:13
Раскрутка сайта heks Статьи 15 15.02.2009 19:51



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ