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

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

Ответить
Настройки темы
PowerShell - Парсинг HTML, Parser HTML

Аватара для dosperados

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


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

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


Изменения
Автор: dosperados
Дата: 13-04-2016
Привет, прошу помощи гуру Powershell по оптимизации и ускорении небольшого HTML парсера.

Код: Выделить весь код
$SiteDate = "http://mp320vip.com/mp3-preview/SINGLES%20-%20New%20Releases%20-%20Beatport-Juno-Traxsource/EURO-DANCE/"
$HttpContent = Invoke-WebRequest -URI $SiteDate"
$HttpContent.Links |  select -skip 5  | Foreach {
$link = $_
$date = [string]($link.href -replace "[/]")
$Fname = [string]"c:\temp\"+($link.href -replace "[/]")+".m3u"
$Flink = [string]"$SiteDate"+$link.href


	$HttpContent2 = Invoke-WebRequest -URI $Flink"
	$HttpContent2.Links | select -skip  5  | Foreach {
	$link2 = $_
	[string]"#EXTINF:-1,"+$link2.outerText+" group-title="""+$date+"""" |  Out-File -FilePath $Fname -append
	[string]"$Flink"+$link2.href |  Out-File -FilePath $Fname -append
	}

}

Отправлено: 10:00, 13-04-2016

 

Ветеран


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

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


Код: Выделить весь код
$wc = New-Object Net.WebClient
$SiteDate = "http://mp320vip.com/mp3-preview/SINGLES%20-%20New%20Releases%20-%20Beatport-Juno-Traxsource/EURO-DANCE/"
$wc.DownloadString("$SiteDate").split("`n") | Where {$_ -match '^<tr>.+<a href="(.+)">.+</a>'} | select -skip 1 | Foreach {
    $link = $matches[1]
    $date = $link -replace "[/]"
    $Fname = "c:\temp\"+($link -replace "[/]")+".m3u"
    $flink = $SiteDate + $link
    $wc.DownloadString($flink).split("`n") | Where {$_ -match '^<tr>.+<a href="(.+)">(.+)</a>'} | select -skip 1 |Foreach {
        $link = $matches[1]
        $text = $matches[2]
        "#EXTINF:-1,"+$text+" group-title="""+$date+""""
        "$flink"+$link
    } | Out-File -FilePath $Fname
}

Последний раз редактировалось Kazun, 13-04-2016 в 11:05.

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

Отправлено: 10:56, 13-04-2016 | #2



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

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


Аватара для dosperados

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


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

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


Kazun, Т.Е. Net объект явно быстрее? почему ты решил полностью переписать на Net.WebClient вместо использования Invoke-WebRequest?

а как добавить использование прокси к этому объекту?

Отправлено: 11:06, 13-04-2016 | #3


Аватара для dosperados

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


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

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


прокси добавил легко,
$wc.Proxy=new-object system.net.WebProxy('http://IP:порт',$true);

а вот понять что делает ваш скрипт не получилось.
данные сильно разнятся с моей версией скрипта...
мой скрипт создает 12608 строк
а ваш 2834

Отправлено: 13:31, 13-04-2016 | #4


Аватара для Pavel Nagaev

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


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

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


Вася тоже говорил, что надо использовать Net.WebClient вместо Invoke-WebRequest, вопрос почему?

-------
Видео на русском про PowerShell
Крутые курсы по PowerShell


Отправлено: 09:30, 14-04-2016 | #5


Ветеран


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

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


Pavel Nagaev, достаточно интересная статья на близкую тему.

Отправлено: 10:43, 14-04-2016 | #6


Аватара для dosperados

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


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

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


Foreigner, я читал ее, и сам тестировал на этом же сайте.
Мои результаты отличаются от того что написано в статье.
Если говорить про скачку файлов, то Start-BitsTransfer быстрее всех, но разница в сотых долесекундах...

А статье описано что 27 (Invoke-WebRequest) секунд и 7 (Net.WebClient) секунд...
может быть и на старых версия PoSh была такая разница сейчас Invoke-WebRequest очень быстро все делает, и мне он кажется очень простым.

Отправлено: 08:46, 15-04-2016 | #7



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Парсинг HTML Smasher Скриптовые языки администрирования Windows 14 25-09-2012 20:45
Копировать текст без редактирования html, возможность вставки как html, так и bb-кода soulrepsol Хочу все знать 3 07-03-2012 09:21
Интернет - [решено] Посоветуйте HTML редактор для осваивания HTML streamrider Программное обеспечение Windows 5 12-12-2011 11:19
HTML parser SliderVM Вебмастеру 14 12-05-2008 11:25
html milan Вебмастеру 20 15-01-2006 05:01




 
Переход