powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Помогите вытащить строки из файла и дополнить их
16 сообщений из 16, страница 1 из 1
Помогите вытащить строки из файла и дополнить их
    #34182293
stepochka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может кто подскажет как сделать такое на vbscript
Есть html файл с примерно таким содержимым
Код: plaintext
href=\"http://www.site.ru/неизменяемый_каталог/изменяемый_каталог1/изменяемый_каталог2/\"...href=\"http://www.site.ru/неизменяемый_каталог/изменяемый_каталог3/изменяемый_каталог4/\"...href=\"http://www.site.ru/неизменяемый_каталог/изменяемый_каталог5/изменяемый_каталог6/\"

из этого файла нужно вытащить строки в другой txt файл что бы получились ссылки вида:
Код: plaintext
1.
2.
http://www.site.ru/неизменяемый_каталог/изменяемый_каталог1/изменяемый_каталог2/изменяемый_каталог2.zip
http://www.site.ru/неизменяемый_каталог/изменяемый_каталог3/изменяемый_каталог4/изменяемый_каталог4.zip
http://www.site.ru/неизменяемый_каталог/изменяемый_каталог5/изменяемый_каталог6/изменяемый_каталог6.zip
Я знаю что надо искать про "парсинг" и про "файл текст", искал, читал, но понял только как драть текст из файлов с какими нить статичными полями расположенными построчно..
И ещё не доходит как скопировать и дописать недостающуую часть изменяемый_каталогN.zip
...
Рейтинг: 0 / 0
Помогите вытащить строки из файла и дополнить их
    #34182302
stepochka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я извиняюсь, забыл написать что интересует реализация на vbscript
...
Рейтинг: 0 / 0
Помогите вытащить строки из файла и дополнить их
    #34182635
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если ссылки и только ссылки обозначены символами " (доеточие), то можно использовать ф-цию
SPLIT в результате каждый второй элемент (если верить предоставленым данным) и будет искомое
Иначе придется использовать Регулярные выражения

I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
Помогите вытащить строки из файла и дополнить их
    #34182954
AndreyMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько я понял, сплитить надо по ...href=\ или что там повторяется (не видно из примера).
Более бы полный входной файл посмотреть.
...
Рейтинг: 0 / 0
Помогите вытащить строки из файла и дополнить их
    #34183183
stepochka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот вырезка из файла
Код: plaintext
1.
2.
//--></script><script><!--
D(["mb","\n\n\n\n\n\n\n\n\n\n\n\n\n<div>  <div><strong><a href=\"http://site.ru/constanta/cat1/cat2/\" title=\" target=\"_blank\" onclick=\"return top.js.OpenExtLink(window,event,this)\"></a><small> / <a href=\"http://site.ru/constanta/cat1/\" target=\"_blank\" onclick=\"return top.js.OpenExtLink(window,event,this)\">\n\n  <br>  <div><strong><a href=\"http://site.ru/constanta/cat3/cat4/\" title=\"\" target=\"_blank\" onclick=\"return top.js.OpenExtLink(window,event,this)\"></a><small> / <a href=\"http://site.ru/constanta/cat3/\" target=\"_blank\" onclick=\"return top.js.OpenExtLink(window,event,this)\"></a></small></strong>\n\n  <small> / \n\n  </small> </div>\n\n  <div>/</div>\n\n  <br>  <div><strong><a href=\"http://site.ru/constanta/cat5/cat6/\" title=\"\" target=\"_blank\" onclick=\"return top.js.OpenExtLink(window,event,this)\"></a><small> / <a href=\"http://site.ru/constanta/cat5/\" target=\"_blank\" onclick=\"return top.js.OpenExtLink(window,event,this)\">
);
Таких блоков в файле тьма
Хотелось бы повыдёргивать ссылки вида http://site.ru/constanta/cat1/cat2/ и переделать их в http://site.ru/constanta/cat1/cat2/cat2.zip

Ссылки вида http://site.ru/constanta/cat1/ ненужны
...
Рейтинг: 0 / 0
Помогите вытащить строки из файла и дополнить их
    #34183208
stepochka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Строчку собрать у меня получилось (пример из хелпа про SubMatches)
Есть 2 нехороших НО : анализирется только первое вхождение в строке и пришлось принудительно удалить двойные кавычки
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Function SubMatchTest(inpStr)
  Dim oRe, oMatch, oMatches
  Set oRe = New RegExp
  oRe.Pattern = "http://site.ru/constanta/(\w+)\/(\w+)/" 
  Set oMatches = oRe.Execute(inpStr)
  Set oMatch = oMatches( 0 )
  retStr = retStr & "итоговая ссылка: http://site.ru/constanta/" & oMatch.SubMatches( 0 ) &"/" & oMatch. SubMatches( 1 ) & "/" & oMatch. SubMatches( 1 ) & ".zip"' xyzzy
  SubMatchTest = retStr
End Function

MsgBox(SubMatchTest("D([mb,\n\n\n\n\n\n\n\n\n\n\n\n\n<div>  <div><strong><a href=\http://site.ru/constanta/cat1/cat2/\ title=\ target=\_blank\ onclick=\return top.js.OpenExtLink(window,event,this)\></a><small> / <a href=\http://site.ru/constanta/cat1/\ target=\_blank\ onclick=\return top.js.OpenExtLink(window,event,this)\>\n\n  <br>  <div><strong><a href=\http://site.ru/constanta/cat3/cat4/\ title=\\ target=\_blank\ onclick=\return top.js.OpenExtLink(window,event,this)\></a><small> / <a href=\http://site.ru/constanta/cat3/\ target=\_blank\ onclick=\return top.js.OpenExtLink(window,event,this)\></a></small></strong>\n\n  <small> / \n\n  </small> </div>\n\n  <div>/</div>\n\n  <br>  <div><strong><a href=\http://site.ru/constanta/cat5/cat6/\ title=\\ target=\_blank\ onclick=\return top.js.OpenExtLink(window,event,this)\></a><small> / <a href=\http://site.ru/constanta/cat5/\ target=\_blank\ onclick=\return top.js.OpenExtLink(window,event,this)\>"))
...
Рейтинг: 0 / 0
Помогите вытащить строки из файла и дополнить их
    #34183509
stepochka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Теперь ищет все вхождения
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Function RegExpTest(patrn, strng)
   Dim regEx, Match, Matches   ' Create variable.
   Set regEx = New RegExp   ' Create a regular expression.
   regEx.Pattern = patrn   ' Set pattern.
   regEx.IgnoreCase = True   ' Set case insensitivity.
   regEx.Global = True   ' Set global applicability.
   Set Matches = regEx.Execute(strng)   ' Execute search.
   For Each Match in Matches   ' Iterate Matches collection.
   Set Match = Matches ( 0 )
       RetStr = RetStr & "итоговая ссылка: http://site.ru/constanta/" & Match.SubMatches( 0 ) &"/" & Match.SubMatches( 1 ) & "/" & Match.SubMatches( 1 ) &".zip"& VbCrLf

   Next
   RegExpTest = RetStr
End Function
MsgBox(RegExpTest("http://site.ru/constanta/(\w+)\/(\w+)/", "D([mb,\n\n\n\n\n\n\n\n\n\n\n\n\n<div>  <div><strong><a href=\http://site.ru/constanta/cat1/cat2/\ title=\target=\_blank\ onclick=\return top.js.OpenExtLink(window,event,this)\></a><small> / <a href=\http://site.ru/constanta/cat1/\target=\_blank\ onclick=\return top.js.OpenExtLink(window,event,this)\>\n\n  <br>  <div><strong><ahref=\http://site.ru/constanta/cat3/cat4/\ title=\\ target=\_blank\ onclick=\return top.js.OpenExtLink(window,event,this)\></a><small>/ <a href=\http://site.ru/constanta/cat3/\ target=\_blank\ onclick=\return top.js.OpenExtLink(window,event,this)\></a></small></strong>\n\n <small> / \n\n  </small> </div>\n\n  <div>/</div>\n\n  <br>  <div><strong><a href=\http://site.ru/constanta/cat5/cat6/\ title=\\target=\_blank\ onclick=\return top.js.OpenExtLink(window,event,this)\></a><small> / <a href=\http://site.ru/constanta/cat5/\target=\_blank\ onclick=\return top.js.OpenExtLink(window,event,this)\>"))

А кто подскажет как быть с двойными кавычками в исходной строке? Удалять из файла не хотелось бы
...
Рейтинг: 0 / 0
Помогите вытащить строки из файла и дополнить их
    #34183608
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepochka

А кто подскажет как быть с двойными кавычками в исходной строке? Удалять из файла не хотелось бы

просто ставится две ковычки
т.е. f = "проба""с"
msgbox f
выведет проба"с
...
Рейтинг: 0 / 0
Помогите вытащить строки из файла и дополнить их
    #34183630
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oRe.Pattern = """http://site.ru/constanta/(\w+)\/(\w+)/"""
...
Рейтинг: 0 / 0
Помогите вытащить строки из файла и дополнить их
    #34183808
stepochka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не не получется у меня функции передать второй аргументы с "
Например:
Код: plaintext
1.
2.
Function RegExpTest(patrn, strng)
patrn=http://site.ru/constanta/(\w+)\/(\w+)/
strng=D(["mb",<a href=\"http://site.ru/constanta/cat1/cat2/"\ (В таком виде строка присутсвуетв файле)

При вызове после замены переменных на их значения получается:

Код: plaintext
RegExpTest("http://site.ru/constanta/(\w+)\/(\w+)/", "D(["mb",<a href=\"http://site.ru/constanta/cat1/cat2/"\"))
Сколько б я кавычек у второго аргумента в начале и в конце не ставил, выдаёт ошибку
...
Рейтинг: 0 / 0
Помогите вытащить строки из файла и дополнить их
    #34183959
stepochka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я уж незнаю интересно ли будет кому, но я таки дочитал хелп, и всё сделал что хотел =)
Всем огромное спасибо!!!
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
Dim Args 'Параметры - исходный и конечный файл
Dim fso 'File System object - объект для доступа к файловой системе
Dim file_in ' входной файлы
Dim file_out ' выходной файл
Dim tmp_s ' временная строчка
Set Args = WScript.Arguments
if Args.Count< 2  then
  Wscript.Echo "Надо задать два файла"
  set Args=Nothing
  WScript.Quit  1 
end if

Set fso = CreateObject("Scripting.FileSystemObject")

Set file_in = fso.OpenTextFile(Args( 0 ),  1 , True) '1- ForReading
Set file_out = fso.OpenTextFile(Args( 1 ),  2 , True) '2 - forWriting

while (not file_in.AtEndOfStream)
   tmp_s=""
   tmp_s=file_in.Readline()
   tmp_s= Replace (tmp_s, Chr( 34 ), "")
   tmp_s= RegExpTest("http://site.ru/constanta/(\w+)\/(\w+)/", tmp_s)
   If Not tmp_s="" then file_out.Writeline(tmp_s)
Wend
file_in.close
file_out.close
set file_out=Nothing
set file_in=Nothing

Function RegExpTest(patrn, strng)
   Dim regEx, Match, Matches   ' Create variable.
   Set regEx = New RegExp   ' Create a regular expression.
   regEx.Pattern = patrn   ' Set pattern.
   regEx.IgnoreCase = True   ' Set case insensitivity.
   regEx.Global = True   ' Set global applicability.
   Set Matches = regEx.Execute(strng)   ' Execute search.
   For Each Match In Matches   ' Iterate Matches collection.
   'Set Match = Matches (0)
       RetStr = RetStr & "итоговая ссылка: http://site.ru/constanta/" & Match.SubMatches( 0 ) &"/" & Match.SubMatches( 1 ) & "/" & Match.SubMatches( 1 ) &".zip"& VbCrLf

   Next
   RegExpTest = RetStr
End Function
...
Рейтинг: 0 / 0
Помогите вытащить строки из файла и дополнить их
    #34184365
stepochka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господа, а может кто ещё подскажет как этот скрипт заставить самому лезть на http://site.ru/ и собирать информацию непосредсвенно со страничек
...
Рейтинг: 0 / 0
Помогите вытащить строки из файла и дополнить их
    #34184966
stepochka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как заставить скрипт лазить на сайт я разобрался.
А вот как сделать так что бы при выполнении file_out.Writeline(string) запись в файл производилась на каждой строке, а не через строку как это делается сейчас
...
Рейтинг: 0 / 0
Помогите вытащить строки из файла и дополнить их
    #34185325
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вероятно в конце строки у вас стоит символ новой строки
и поэтому надо использовать не WriteLine, а Write (если конечно есть такой метод), либо символ обрубать


I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
Помогите вытащить строки из файла и дополнить их
    #34185540
stepochka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
HandKotВероятно в конце строки у вас стоит символ новой строки
Точно! Огромное спасибо, проглядел
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Помогите вытащить строки из файла и дополнить их
    #36352705
Andreas_84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stepochkaHandKotВероятно в конце строки у вас стоит символ новой строки
Точно! Огромное спасибо, проглядел

Хорошая прога есть для этого дела!!
Easy file Editor
Полезная ссылка.Find & Replace Examle
Полезная ссылка.Синтаксис регулярных выражений
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Помогите вытащить строки из файла и дополнить их
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]