Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
14 / 12 / 2
Регистрация: 27.03.2017
Сообщений: 105

Как обойтись без темп файла при парсинге ?

12.12.2019, 14:35. Показов 1812. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день всем!
Для парсинга одного сайта написал скрипт:
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$url = 'https:какой-то сайт/'
$file = New-TemporaryFile
 
(Invoke-WebRequest -UseBasicParsing -URI $url).Content | Out-File $file.FullName
 
$pl = @(for($i, $arr = 0, (gc $file.FullName -Encoding utf8); $i -lt $arr.Length;) {
$a, $b = $arr[$i], $arr[$i + 1]
if ($a -match 'https?.*m3u8' -and $b -match 'channel-icon') {
    "$a`n$b"
    $i += 2
}
else {
    ++$i
    continue
}
}) | ForEach {$_ -replace ".*(https?.*m3u8).*`n.*alt=`"(.*)`" class=.*icon`" src=`"(.*)`" one.*","#EXTINF:-1 tvg-logo=`"`$3`",`$2`n`$1"}
Но никак не получается передать "сырец" сразу в цикл, чтобы не использовать промежуточный файл и Get-Content.
Возможно ли сразу передать вывод с Invoke-WebRequest в цикл без создания темп файла ?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.12.2019, 14:35
Ответы с готовыми решениями:

Как обойтись без cl файла в OpenCL?
Здравствуйте! В OpenCL требуются cl файлы, в которых задаются процедуры обработки данных. Это выглядит примерно так: ...

PHP как обойтись без капчи при регистрации
Хочу сделать проверку на сайт при регистрации , но без капчи. как это осуществить, суть такова. Я делаю одно из полей заполнения невидимым...

Как обойтись без Setup при работе с базой Access
У меня такая проблема: написал прогу, которая использует MS Access, но оказалось, что при её работе крайне не желательно ничего...

4
 Аватар для alhaos
1929 / 545 / 154
Регистрация: 20.02.2019
Сообщений: 2,662
Записей в блоге: 65
12.12.2019, 14:48
Цитата Сообщение от Uragan66 Посмотреть сообщение
Как обойтись без темп файла при парсинге ?
А вас не затруднит [лично мне] пояснить, что и как вы хотите тут сделать, я не очень понимаю, может есть альтернативный путь...
0
14 / 12 / 2
Регистрация: 27.03.2017
Сообщений: 105
12.12.2019, 15:08  [ТС]
alhaos, вкратце так:
Invoke-WebRequest скачивает страницу (исходный код) в темп файл (можно в любой, разницы никакой).
Далее в цикле идёт отбор с массива по две нужные строки (переменные $a, $b), остальные строки пропускаются.
На выходе получаем только нужные строки. Далее идёт удаление мусора и сохранение в нужный файл.
Так код работает, причём очень быстро. Но хотелось бы избавиться от создания темпого файла.
Передать выход
PowerShell
1
(Invoke-WebRequest -UseBasicParsing -URI $url).Content
сразу в цикл.
Пробовал сохранять в переменной :
PowerShell
1
2
$lk = (Invoke-WebRequest -UseBasicParsing -URI $url).Content
$pl = @(for($i, $arr = 0, $lk; $i -lt $arr.Length;)
Но так не работает.
0
 Аватар для alhaos
1929 / 545 / 154
Регистрация: 20.02.2019
Сообщений: 2,662
Записей в блоге: 65
12.12.2019, 15:19
Лучший ответ Сообщение было отмечено Uragan66 как решение

Решение

убейте меня глупого, не пойму как работает эта конструкция, но есть предположение, что get-content посылает Вам данные построчно, а если вы ставите туда переменную то она передается вся.

я сегодня про -split пост писал.
попробуйте предать строку разбив ее на подстроки -split "`n"

System.String.Split()

Без претензий, чисто предположение.
1
14 / 12 / 2
Регистрация: 27.03.2017
Сообщений: 105
12.12.2019, 15:52  [ТС]
Цитата Сообщение от alhaos Посмотреть сообщение
есть предположение, что get-content посылает Вам данные построчно
По идее так оно и есть... Когда-то дали мне пример этого кода для другой цели, здесь он тоже пришелся очень кстати, разметка страницы сайта позволяет его применить.
Попробую ещё с оператором split, спасибо за подсказку.
Оно то и мой код отлично работает, но хотелось бы лаконичнее его сделать, без использования промежуточного файла.

Добавлено через 5 минут
alhaos, спасибо большое за подсказку!
Так получилось:
PowerShell
1
2
$lk = ((Invoke-WebRequest -UseBasicParsing -URI $url).Content) -split "`n"
$pl = @(for($i, $arr = 0, $lk; $i -lt $arr.Length;)
Добавлено через 13 минут
Можно и так:
PowerShell
1
$pl = @(for($i, $arr = 0, (((Invoke-WebRequest -UseBasicParsing -URI $url).Content) -split "`n"); $i -lt $arr.Length;)
но как-то некрасивый код получается
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.12.2019, 15:52
Помогаю со студенческими работами здесь

Как при восстановлении hdd можно обойтись без комплекса pc-3000?
Сам понемногу занимаюсь ремонтом пк в глубинке. Есть несколько дохлых hdd (bad Сектора, Некоторые Просто не Определяются и т.д). На...

Как прописать разделитель при парсинге cvs файла?
Скажите , как вот тут tokens = csv.writer(file,delimiter = '\n') как прописать перевод на следующую строку и самое главное разделитель? ...

Error: code too large. Можно обойтись без внешнего файла?
Есть тяжелый arraylist который вызывает эту ошибку. Читал, что нужно создавать properti файл и переносить туда данные, но у меня arraylist...

Можно ли в 1С 8.2 обойтись без мастеров, при конфигурировании?
Пишу довольно сносно в 1с 7.7, решил в 8.2 поразбираться, скачал самоучитель (Радченко автор) так он все при помощи мастеров там стряпает,...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru