Прототип Юбера Алекса : другие произведения.

Жнец против клана тагов

Самиздат: [Регистрация] [Найти] [Рейтинги] [Обсуждения] [Новинки] [Обзоры] [Помощь|Техвопросы]
Ссылки:
Школа кожевенного мастерства: сумки, ремни своими руками
 Ваша оценка:
  • Аннотация:
    Тем наивным, кому уже ничто не поможет. Прога для выстригания тагов из ХТМЛ-файла для получения "чисто текста".


' striphtml: скрипт уборки тегов (c) 2004 Alex 'LabRat' Lobanov

outstr=WScript.Arguments(1)
arg0=WScript.Arguments(0)
set fso=createobject("scripting.filesystemobject")
set i_txtfile = fso.opentextfile(arg0,1) ' входной html-файл
set o_txtfile = fso.createtextfile(outstr,1) ' выходной, plain text



do while i_txtfile.atendofstream <> true
'do while i_txtfile.atendofline <> true 'проблемы при составных файлах
 i_line=i_txtfile.readline 
 StripHtmlCode i_line
 o_txtfile.writeline(i_line)
loop



Sub StripHTMLCode(txt)
    Dim oReg
    Set oReg = New RegExp        ' Create regular expression.
    oReg.Global = True           ' All matches
    oReg.IgnoreCase = True       ' Make case insensitive.



        oReg.Pattern = "(<DD>|&nbsp;)" ' замена на пробелы
        oReg.Global = True          ' All matches
        txt = oReg.Replace(txt, " ")


'        oReg.Pattern = "<P>" 
'        oReg.Global = True          ' All matches
'         txt = oReg.Replace(txt, "")


'        oReg.Pattern = "<br>" '  'Замена на перевод строки (force wrap)
        oReg.Pattern = "<(br|p)>" '  'Замена на перевод строки (force wrap)
        oReg.Global = True          ' All matches
        txt = oReg.Replace(txt, "	" & vbCrLf)


'TESTED:
'  oReg.Pattern = "(<((/.*)|((div .*"")|(p)|(DD)|(b)))>)" ' режет все что надо,
' расширяется - легко: главное следить за порядком и количеством скобок

'  oReg.Pattern = "(<((/.*)|((((div)|(td)|(th)|(table)|(font)|(tr)) .*"")|(p)|(b)|(i)|(html)|(tr)|(tbody)))>)" ' тоже режет все,
' кроме тегов, содержащих перевод строки

' Следующая строчка задает маску для убийства всех трудов скрипта makehtml2.vbs
'  oReg.Pattern = "(<((/.*)|((((div)|(td)|(th)|(table)|(font)|(tr)|(a)) .*"")|(p)|(b)|(i)|(html)|(tr)|(tbody)|(ul)|(li)))>)" 
  oReg.Pattern = "(<((/.*)|((((div)|(td)|(th)|(table)|(font)|(tr)|(a)) .*"")|(b)|(i)|(html)|(tr)|(tbody)|(ul)|(li)))>)" 

        oReg.Global = True          ' All matches
        txt = oReg.Replace(txt, "") ' убиваем теги разметки (сбоит, если
                                    ' внутри тега есть перевод строки)

        oReg.Pattern = "&lt;" ' 
        oReg.Global = True          ' All matches
        txt = oReg.Replace(txt, "<")

        oReg.Pattern = "&gt;" ' 
        oReg.Global = True          ' All matches
        txt = oReg.Replace(txt, ">")

        oReg.Pattern = "&amp;" ' 
        oReg.Global = True          ' All matches
        txt = oReg.Replace(txt, "&")

' Поиск инфы об авторе (индексная аббревиатура документа)
        oReg.Pattern = ".*LAV" 'сигнатура индекса с пробелами
        oReg.Global = True          ' All matches
        txt = oReg.Replace(txt, "LAV")

' Поиск даты создания в формате "имени Винтукея"
        oReg.Pattern = "(.*)((Jan)|(Feb)|(Mar)|(Apr)|(May)|(Jun)|(Jul)|(Aug)|(Sep)|(Oct)|(Nov)|(Dec))" 
         if oReg.Test(txt) then

          oReg.Global = True      
          set matches = oReg.Execute(txt)
'         set match=matches(0) ' ругается
         for each Match in Matches       ' Match у нас одна, поэтому цикл ;)
           datestrbeg=match.Value        ' Получаем начало строки даты
           Set oReg1 = New RegExp        ' Создаем плэйс для доп. рег. выражения
           oReg1.Global = True           ' Глобально ищем
           oReg1.IgnoreCase = True       ' Херим кейс (чувствительность к регу)
           oReg1.Pattern=" "             ' ищем лид. пробелы перед строкой даты
           datestrbeg=oReg1.Replace(datestrbeg,"") ' удаляем
          next
    ' All matches
          txt = oReg.Replace(txt, datestrbeg) ' подставляем "похудевшую" строку
         end if
'        oReg.Pattern = ".*LAV" ' Dot+Tab
'        oReg.Global = True          ' All matches
'        txt = oReg.Replace(txt, "LAV")


End Sub

 Ваша оценка:

Связаться с программистом сайта.

Новые книги авторов СИ, вышедшие из печати:
О.Болдырева "Крадуш. Чужие души" М.Николаев "Вторжение на Землю"

Как попасть в этoт список

Кожевенное мастерство | Сайт "Художники" | Доска об'явлений "Книги"