Показать полную графическую версию : [решено] Скачивание файла\Парс строки из файла в переменную
Добрый день! Прошу помощи. Третий день уже гуляю по рунету, перерыл кучу скриптов, но довести до конца так и не смог xD. Воощем сама задача состоит в скачивании файла с mediafire.*** (не знаю можно нет тут линки постить). Вообщем пробовал curl и wget (wget2 только не пробовал).curl -O "https://www.mediafire.com/file/h3e51rwcr4jrh8m/iconapp.dll/file" качает file без расширения, ну понятно что это страничка загрузки файла, в этом файле есть линк на скачку файла, которую надо вытащить (так понял что по номеру строки лучше не делать парс, так как может измениться) <a class="input popsok"
aria-label="Download file"
href="https://download1586.mediafire.com/4jsacics6yigFwpWnXlh3fWPXGGxxiPcGZeHB8a4UU6cCuZ7slbzY_O2198VfoPuO3eGNlHXjSvC7gMEMXWLo1094J-ts15YX_u_rCCBGOB2ueOyXXMxkGVPEsW9F3K6sP0sDLjRtRfE80k2lrmOIVMIPr04guI1F7x90fXUHSlk4Iw/h3e51rwcr4jrh8m/iconapp.dll" id="downloadButton"
rel="nofollow">
Download (9.33MB)
</a>
Подскажите пожалуйста как вытащить строку на загрузку по прямой ссылке? Прям вот очень хочется глянуть) Парс нужен от "href="https://d" и до ". Ну или может есть какой та другой вариант? Буду очень признателен :-)
wget -qO- "https://www.mediafire.com/file/h3e51rwcr4jrh8m/iconapp.dll/file" | grep -Pozi 'aria-label="Download\sfile"\s*href="\K[^"]+' | wget -qi- так скачивает например.
так скачивает например. »
У меня вообще сразу все закрывается. А Подскажите пожалуйста как вытащить строку »с этим не подскажите? тогда и curl был бы рабочим вариантом и без лишних файлов.
:help:
уберите "| wget..." и выведет ссылку
уберите "| wget..." и выведет ссылку »Так же просто закрывается.
grep »У меня windows если что) Нашел скачал ругается на отсутствие 4х файлов (pcre3.dll, regex2.dll, libintl3.dll, libiconv2.dll) Буду искать сейчас.
upd. Зависимости все нашел, теперь вот что пишет grep: The -P and -z options cannot be combined, и файл создает .wget-hsts.
если нужен PS, то там wget это invoke-webrequest, который уже сам парсит html
(wget "https://www.mediafire.com/file/h3e51rwcr4jrh8m/iconapp.dll/file").links | ? aria-label -eq 'download file' | select -exp href
если нужен PS »
Плохой опыт с ним, надо cmd либо сmd с какими нибудь консольными утилитами (не грамозкими). Не могу понять почему ваш первый вариант не работает, а у вас срабатывает(
рабочий grep из MSYS2. grep из git тоже работает, то требует юникод-локаль (set LC_ALL=en_US.utf8).
"\K" (отбрасывает строку слева) требует флага -P (perl - выражения). Есть другие флаги (E и G), может и там что-то есть.
(wget "https://www.mediafire.com/file/h3e51rwcr4jrh8m/iconapp.dll/file").links | ? aria-label -eq 'download file' | select -exp href »
в cmd сделал, ответ верный, то что надо. Как в переменную это все завернуть? Подскажи пожалуйста!
powershell -command "(wget "https://www.mediafire.com/file/h3e51rwcr4jrh8m/iconapp.dll/file").links | ? aria-label -eq 'download file' | select -exp href"долго правда, но на первое время сойдет, парс с файла все равно допилю когда время будет.
в cmd обычно через for вывод в переменную пишут @for /f "tokens=* usebackq" %%f in (`powershell ...`) do @set var=%%f
@for /f "tokens=* usebackq" %%f in (`powershell ...`) do @set var=%%f »
увидел свою ошибку, благодарю!
Uragan66
01-03-2024, 11:09
Как в переменную это все завернуть? »
Может и на PS код пригодится:
$url = "https://www.mediafire.com/file/h3e51rwcr4jrh8m/iconapp.dll/file"
$link = ((Invoke-WebRequest -URI $url).Links | Where-Object {$_.class -eq "input popsok"}).href
$link
В переменной $link искомая ссылка.
Лучше конечно html-теги по атрибуту id искать (при наличии) для гарантии уникальности и единственного значения. В данном случае id -eq 'downloadbutton'. Ни class ни произвольные атрибуты не дают гарантии единственного значения.
Uragan66
02-03-2024, 11:38
Ни class ни произвольные атрибуты не дают гарантии единственного значения. »
Возможно... Но проверил первую попавшуюся ссылку с mediafire, с "class input popsok", - всё сработало, прямая ссылка вытащилась.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.