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

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

Ответить
Настройки темы
PowerShell - [решено] Парсер html файла

Новый участник


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

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


Всем привет! Передо мной стоит следующая задача - имея ссылку на страничку в интернете проанализировать ее содержимое, скачать и сконвертировать в другой формат одну картинку (имя каждый раз разное, но есть характерные приметы), а так же скачать трейлер с ютуба. Картинку и клип положить в созданную папку. Исходная ссылка всегда имеет вид: http://www.luxorfilm.ru/film/хххх/названиефильма/ Где хххх - четыре цифры. Именно их нужно использовать в качестве имени для папки.

1 скрипт принимает ссылку как аргумент и создает папку из части этой ссылки. Каждый раз ссылка содержит четыре цифры, их и нужно взять в качестве имени
2 скачивает html файл по ссылке
3 читает содержимое файла и запишет в переменные без html тегов две ссылки:
- одна на картинку
- одна на ролик на ютубе
4 получает ссылку из переменной и конвертирует каринку в нужный формат
5 получает ссылку из переменной и скачивает видео с ютуба
6 складывает результаты шагов 4 и 5 в папку, созданную на шаге 1

Пока не получилось выдернуть необходимые куски текста из ссылки для скачивания картинки и ролика.

Что получилось:
0 создать директорию
1 скачать файл, получить из него части текста содержащие нужные значения
2 сконвертировать файл в нужный формат
3 скачать клип с ютуба

Основной скрипт:

Код: Выделить весь код
пример запуска: имяскрипта.ps1 http://www.luxorfilm.ru/film/2161/Rio-2/
$source = "$args[0]#.Length"
$dir = ("$args[0]#.Length" -split '/')[4] 
New-Item -ItemType Directory $dir
$file = "film.html"
Invoke-WebRequest $source -OutFile $file
# $wc.DownloadFile($source, $file)
Select-String "http://www.luxorfilm.ru/upload/movies/" film.html | Select-Object -ExpandProperty line
Select-String "youtube.com/embed" film.html | Select-Object -ExpandProperty line
Скачиваем и конвертируем картинку

Код: Выделить весь код
$source = "http://www.luxorfilm.ru/upload/movies/2161/1000_rio2.jpg"
$destination = "poster.jpg"
$wc = New-Object System.Net.WebClient
$wc.DownloadFile($source, $destination)
$sourceFile = "poster.jpg"
$saveFile = "poster.png"
Add-Type -AssemblyName system.drawing
$imageFormat = "System.Drawing.Imaging.ImageFormat" -as [type]
$image = [drawing.image]::FromFile($sourceFile)
$image.Save($saveFile, $imageFormat::png)
Скачиваем трейлер (используется youtube-dl. пока не переписал на PS)

Код: Выделить весь код
пример запуска:
имяскрипа www.youtube.com/embed/2IZhz_0rwz4
echo off
set arg1=%1
youtube-dl.exe -o trailer.flv %arg1%

Отправлено: 13:38, 24-03-2014

 

Ветеран


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

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


Код: Выделить весь код
param($url,$folder = "C:\Test")

Add-Type -AssemblyName system.drawing

# Создадим папку
$dir = [regex]::match($url,"/(\d{4})/").Groups[1].ToString()
$path = Join-Path $folder $dir
$savefile = Join-Path $path poster.png
$saveyou = Join-Path $path trailer.flv

if(!(Test-Path $path)) {
	md $path | out-null
}

# Получим ссылку на картинку
$iw = Invoke-WebRequest $url
$image = Invoke-WebRequest ($iw.Links | Where href -match "/$dir/.*\.jpg").href

# Сохраним картинку в png
$m = New-Object IO.MemoryStream(,([byte[]]$image.content))
$st = [drawing.image]::FromStream($m)
$st.Save($saveFile, "png")

# Получим ссылку на youtube
$you = $iw.ParsedHtml.getElementsByName("ctl00_contentPlaceHolder_youtubeTrailerDiv") |
	Where innerHTML -match "www.youtube.com/embed" | Foreach {if($_.innerHTML -match 'src="//(.+)" frameBorder') {$matches[1]}}

youtube-dl.exe -o $saveyou $you
.\script.ps1 http://www.luxorfilm.ru/film/2161/Rio-2/
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:36, 24-03-2014 | #2



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

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



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Парсер строк TXT файла Flayer Скриптовые языки администрирования Windows 9 15-10-2011 09:44
[решено] HTML Application - отправка файла на сервер rsod Вебмастеру 4 13-02-2011 14:13
[решено] из файла Word получаем сразу таблицу в HTML... serj88rus Вебмастеру 2 05-07-2010 12:09
Помогите пожалуйста создать скрипт html(проигрование avi файла) Большой Кол Вебмастеру 2 28-12-2008 23:42
HTML - ProgressBar загружаемого файла XCodeR Вебмастеру 4 05-02-2006 20:49




 
Переход