Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - экстрагирование ссылок по признаку из html-файла

Ответить
Настройки темы
VBS/WSH/JS - экстрагирование ссылок по признаку из html-файла

Пользователь


Сообщения: 87
Благодарности: 0

Профиль | Отправить PM | Цитировать


Имеется папка с html-файлами, содержащими разнообразные гиперссылки.
Из этих ссылок интересуют ссылки типа "http://xyz-user.livejournal.com/24701.html?thread=1004158#t1004158"
Можно ли написать js/vbs файл, который извлекал бы такие ссылки из всех html-файлов этой папки по признакам - они в кавычках, содержат блок html?thread= и http://xyz-user.livejournal.com/ (последнее впрочем не принципиально т.к. блок html?thread= содержится только среди ссылок с http://xyz-user.livejournal.com/) и выдавал бы текстовый файл со списком таких ссылок?

Отправлено: 12:18, 03-06-2014

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Можно.

Отправлено: 18:09, 03-06-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1264
Благодарности: 1024

Профиль | Отправить PM | Цитировать


ruslaw, пробуйте:
читать дальше »

Код: Выделить весь код
Option Explicit

Const ForReading = 1, ForWriting = 2
Dim objArgs, objFSO, objFolder, objFile, objTextStream, objResultTextStream
Dim objRegExp, objMatches, objMatch
Dim strFolder

'Check arguments count
Set objArgs = WScript.Arguments
If objArgs.Count = 0 Then
	WScript.Echo "Syntax: "	& WScript.ScriptName & " ""path to folder"""
	WScript.Quit(1)
End If

'Check first argument is folder
Set objFSO = CreateObject("Scripting.FileSystemObject")
strFolder = WScript.Arguments(0)
If Not objFSO.FolderExists(strFolder) Then
	WScript.Echo "Specified folder " & strFolder & " not exists"
	WScript.Quit(1)
End If

'Create regexp object
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Pattern = """http:\/\/[\w-]+\.livejournal.com\/\d+\.html\?thread\=\d+#t\d+"""
objRegExp.Global = True
objRegExp.IgnoreCase = True

'Create result log-file
Set objResultTextStream = objFSO.OpenTextFile(objFSO.GetParentFolderName(WScript.ScriptFullName) & "\result.log", ForWriting, True)

'Enumerate html-files in folder
Set objFolder = objFSO.GetFolder(strFolder)
For Each objFile in objFolder.Files
	If (UCase(objFSO.GetExtensionName(objFile.Name)) = "HTML") And (objFile.Size > 0) Then
		'Open file
		Set objTextStream = objFSO.OpenTextFile(objFile.Path, ForReading)
		'Read file and get matches
		Set objMatches = objRegExp.Execute(objTextStream.ReadAll)
		For Each objMatch In objMatches
			'Write match
			objResultTextStream.WriteLine objMatch.Value
		Next
	End If
Next

'Close result log-file
objResultTextStream.Close

'Cleanup
Set objArgs = Nothing
Set objFSO = Nothing
Set objFolder = Nothing
Set objFile = Nothing
Set objTextStream = Nothing
Set objResultTextStream = Nothing
Set objRegExp = Nothing
Set objMatches = Nothing
Set objMatch = Nothing
Set strFolder = Nothing

WScript.Echo "Done."
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:59, 05-06-2014 | #3


Пользователь


Сообщения: 87
Благодарности: 0

Профиль | Отправить PM | Цитировать


А как указать папку?
Я подставил вместо строки path to folder адрес C:\test
При нажатии на файл отвечает Windows Script Host подсказкой такого типа: Syntax: Threads.vbs "C:\test"
Если имя папки не подставлять то ответ будет такой: Syntax: Threads.vbs "path to folder"
Файл помещал и в папку и в корень.

Отправлено: 19:08, 06-06-2014 | #4


Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1264
Благодарности: 1024

Профиль | Отправить PM | Цитировать


ruslaw, скрипт принимает путь к папке с html-файлами в качестве параметра. Открываете консоль из того места, где лежит скрипт, пишете threads.vbs "путь к папке с файлами". После обработки файлов рядом с скриптом будет результат в виде файла result.log.

Отправлено: 21:51, 06-06-2014 | #5


Пользователь


Сообщения: 87
Благодарности: 0

Профиль | Отправить PM | Цитировать


Сработало. Прекрасно!
А нельзя ли сделать аналогичный скрипт, который извлекал бы из текстовых файлов в некоторой папке все строки заключенные между двумя определенными наборами символов, например keyword1 и keyword2, причем в любом из файлов таких строк будет не одна, и в строках возможны пробелы.

Отправлено: 00:11, 07-06-2014 | #6


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата El Sanchez:
Открываете консоль из того места, где лежит скрипт, пишете threads.vbs "путь к папке с файлами". »
В данном случае можно также просто перетащить папку на скрипт.

Отправлено: 01:44, 07-06-2014 | #7


Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1264
Благодарности: 1024

Профиль | Отправить PM | Цитировать


Цитата ruslaw:
А нельзя ли сделать аналогичный скрипт, который извлекал бы из текстовых файлов в некоторой папке все строки заключенные между двумя определенными наборами символов, например keyword1 и keyword2, причем в любом из файлов таких строк будет не одна, и в строках возможны пробелы. »
ruslaw, можно. В каких файлах искать? Как выглядят keyword1 и keyword2? Без дополнительных данных все ответы будут такими же, как в сообщении #2.

Цитата Iska:
В данном случае можно также просто перетащить папку на скрипт. »
Iska, никаких легких путей, только комстрока, только хардкор

Отправлено: 10:21, 08-06-2014 | #8


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата El Sanchez:
Iska, никаких легких путей, только комстрока, только хардкор »
Народ измучен нарзаном избалован GUI.

Отправлено: 10:54, 08-06-2014 | #9


Пользователь


Сообщения: 87
Благодарности: 0

Профиль | Отправить PM | Цитировать


имеются ввиду html-файлы в папке.
keyword1 = "level":1,
keyword2 = "expandchilds"
в обоих случаях кавычки входят в состав keywords

Отправлено: 00:18, 09-06-2014 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - экстрагирование ссылок по признаку из html-файла

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Переименование файла по данным из самого файла dark-------13 Скриптовые языки администрирования Windows 11 21-04-2011 18:08
[решено] из файла Word получаем сразу таблицу в HTML... serj88rus Вебмастеру 2 05-07-2010 12:09
CMD/BAT - Как из бат-файла проверить наличие файла по ссылке, не скачивая файл ? mitiya Скриптовые языки администрирования Windows 2 27-06-2008 20:50
Как отконвертировать html з ссылками в формат для вставки ссылок в форум? spiritmen Хочу все знать 2 23-05-2007 10:52
подгрузка части кода на html-страницу из отдельного файла shmond Вебмастеру 3 04-04-2007 16:43




 
Переход