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

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

Ответить
Настройки темы
Любой язык - [решено] wget команда не закачивает файл по ссылке

Старожил


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

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


Изменения
Автор: v79italya
Дата: 02-09-2019
добрый день. хотел закачать файл .csv по ссылке через wget команду. команда такая: c:\wget\wget.exe -i c:\url-list.txt --secure-protocol=auto -nc -c -P c:\files\ . выходит такое сообщение
Скрытый текст
HTML код: Выделить весь код
Microsoft Windows [Version 6.1.7601] (c) Корпорация Майкрософт 2012. Все права защищены. C:\Users\Администратор>c:\wget\wget.exe -i c:\url-list.txt --secure-protocol=aut o -nc -c -P c:\files\ --2019-06-29 20:33:55-- https://query1.finance.yahoo.com/v7/finance/download/AA U?period1=1530282224&period2=1561818224&interval=1d&events=history&crumb=lW3nnVK .6HD Resolving query1.finance.yahoo.com (query1.finance.yahoo.com)... 87.248.118.23, 87.248.118.22, 2a00:1288:80:800::7000, ... Connecting to query1.finance.yahoo.com (query1.finance.yahoo.com)|87.248.118.23| :443... connected. HTTP request sent, awaiting response... 401 Unauthorized Username/Password Authentication Failed. C:\Users\Администратор>


какая причина не пойму, так как мало в этом разбираюсь. есть момент что эсли эту ссылку на яхоо вставить в браузер IE, то загрузка не происходит. если же вставить в браузер гугл хром, то без лишних диалогов закачивает на ура. хотелось бы закачать через wget.
не могли бы помочь найти проблему. или есть другие варианты для скачивания нескольких файлов по списку

Отправлено: 18:44, 29-06-2019

 

Старожил


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

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


Sham, по совету из сообщения №6 у меня не получилось получить Cookie.
по ссылке есть код. еще и не известно рабочий или нет, но как этот код проверить? возможно ли переделать под Excel или VBS или под SHell или VGet?
Скрытый текст
/* use WORK location to store our temp files */
filename out "%sysfunc(getoption(WORK))/output.txt";
filename hdrout "%sysfunc(getoption(WORK))/response1.txt";

/* This PROC step caches the cookie for the website finance.yahoo.com */
/* and captures the web page for parsing later */
proc http
out=out
headerout=hdrout
url="https://finance.yahoo.com/quote/AAPL/history?p=AAPL"
method="get";
run;

/* Read the response and capture the cookie value from */
/* the CrumbStore field. */
/* The file has very long lines, longer than SAS can */
/* store in a single variable. So we read in <32k chunks. */
data crumb (keep=crumb);
infile out recfm=n lrecl=32767;
/* the @@ directive says DON'T advance pointer to next line */
input txt: $32767. @@;
pos = find(txt,"CrumbStore");
if (pos>0) then
do;
crumb = dequote(scan(substr(txt,pos),3,':{}'));
/* cookie value can have unicode characters, so must URLENCODE */
call symputx('getCrumb',urlencode(trim(crumb)));
output;
end;
run;

%put &=getCrumb.;

filename data "%sysfunc(getoption(WORK))/data.csv";
filename hdrout2 "%sysfunc(getoption(WORK))/response2.txt";

proc http
out=data
headerout=hdrout2
url="https://query1.finance.yahoo.com/v7/finance/download/AAPL?period1=1535835578%str(&)period2=1538427578%str(&)interval=1d%str(&)events=history%str(&)crumb= &getCrumb."
method="get";
run;

proc import
file=data
out=history
dbms=csv
replace;
run;

proc sgplot data=history;
highlow x=date high=high low=low / open=open close=close;
xaxis display=(nolabel) minor;
yaxis display=(nolabel);
run;

Отправлено: 16:03, 30-06-2019 | #11



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

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


Deadooshka


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

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


параметр crump в url парсится из страницы с таблицей. ..."CrumbStore":{"crumb":"VtJMp2OUzaw"}... (будет ...&crumb=VtJMp2OUzaw)...

Отправлено: 22:43, 30-06-2019 | #12


Deadooshka


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

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


попробуйте этот js-скрипт, вроде качает.

Скрытый текст
Код: Выделить весь код
var dir = 'c:\\files';
var urls = 'c:\\url-list.txt';
var pause = 300; //ms

var u1 = 'https://query1.finance.yahoo.com/v1/test/getcrumb';

var r = get(u1)[1];
if (!r) WScript.Quit(1);
r = '&crumb=' + r;

/*
var u1 = 'https://finance.yahoo.com/quote/AAPL/history';
var r = /"CrumbStore":{"crumb":"([^"]+)/g.exec(get(u1)[1]);
if (!r) WScript.Quit(1);
r = '&crumb=' + r[1];
*/

var fso = new ActiveXObject('Scripting.FileSystemObject');
var fr = fso.OpenTextFile(urls, 1);
if (!fr) WScript.Quit(2);

while (!fr.AtEndOfStream) {
	var l = fr.ReadLine();
	if (!l) continue;
	l = l.replace(/&crumb=[^&]*/, r);
	WScript.Sleep(pause);
	var o = get(l);
	if (!o[0] || !o[1]) continue;
	var f = fso.OpenTextFile(dir + '\\' + o[0], 2, true, -2);
	f.Write(o[1]);
	f.Close();
}

fr.Close();

function get(url) {
	var h = new ActiveXObject('Microsoft.XMLHTTP');
	if (typeof h !== 'object' || !/^https?:/i.test(url)) return ['', ''];
	h.open('GET', url, false);
	h.setRequestHeader('User-Agent', 'Firefox/666.6');
	h.setRequestHeader('Accept', '*/*');
	try {
		h.send();
	} catch(e) {
		WScript.Echo(e);
	}
	var f = /^attachment; filename=(.+)$/g
		.exec(h.getResponseHeader('Content-Disposition'));
	if (f) f = f[1];
	return [f, h.responseText];
}

Последний раз редактировалось Sham, 02-07-2019 в 16:56. Причина: пауза + другой урл для получения crumb

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

Отправлено: 03:00, 01-07-2019 | #13


Старожил


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

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


Sham, спасибо за ответ, только как этим кодом пользоваться. объясните как дураку подробно.
нагуглил про Ctrl+Shift+J. вставил код - вышел такой ответ. в какой программе этот код использовать?
в принципе, вчера я установил Python 3.7, но как пользоваться - не знаю.

Последний раз редактировалось v79italya, 02-09-2019 в 11:34.


Отправлено: 09:56, 01-07-2019 | #14


Deadooshka


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

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


это же WSH
Код: Выделить весь код
CScript c:\script.js //Nologo //E:JScript

Отправлено: 14:09, 01-07-2019 | #15


Старожил


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

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


Цитата Sham:
это же WSH »
что это? ни одно так другое
ладно, не будем мучить ни я вас ни вы меня. пусть проблема остается проблемой. полгода уже пытаюсь решить эту проблему. отложу опять в сторону
всем спасибо кто пытался
тему можно закрывать

Отправлено: 15:11, 01-07-2019 | #16


Ветеран


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

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


Цитата v79italya:
что это? »
Скопировать вышеприведённый код, сохранить его в файл с расширением .js.

Отправлено: 17:11, 01-07-2019 | #17


SHVtYW4=


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

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


Цитата v79italya:
по совету из сообщения №6 у меня не получилось получить Cookie. »
Там не было описано как получить cookies. Только загрузка в wget, а не скачивание с помощью wget.

Google Chrome
Устанавливаете расширение: cookies.txt

Щелкаете по значку.
Выделяете строку вида:
Код: Выделить весь код
.yahoo.com	TRUE	/	FALSE	1234567890	B	abcdef1ghi2j3&b=1&s=kl
У вас значения 1234567890 и abcdef1ghi2j3&b=1&s=kl будут другими, по этому отсюда не копируйте, копируйте у себя. Эти значения я придумал.

Создаёте текстовый файл с названием cookies и расширением txt
Вносите в cookies.txt скопированные данные вида:
Код: Выделить весь код
.yahoo.com	TRUE	/	FALSE	1234567890	B	abcdef1ghi2j3&b=1&s=kl

P.S Cookies можете сразу сохранить в файл нажав click here.
В таком случае вам придётся открыть cookies.txt и подправить данные т.к сохраняются они криво.
Вы увидите следующее abcdef1ghi2j3&amp;b=1&amp;s=kl
Вам нужно будет удалить amp;, т.е:
Было: abcdef1ghi2j3&amp;b=1&amp;s=kl
Стало: abcdef1ghi2j3&b=1&s=kl
Firefox
Устанавливаете расширение: cookies.txt
Нажимаете на значок для сохранения файла.
Сохраняете.
В случае с Firefox - Не нужно что-то подправлять.


Отсюда копируете ссылку Download Data

Скачиваете wget'ом, например:
Код: Выделить весь код
"C:\WGET\wget.exe" --load-cookies="C:\WGET\cookies.txt" "https://query1.finance.yahoo.com/v7/finance/download/AAU?period1=1234567890&period2=1234567890&interval=1d&events=history&crumb=AB12CdeFGHI"
Ссылку копируете у себя, а не отсюда. Данные в ссылке также придумал.
Пути к wget.exe и cookies.txt подставляете свои.

-------
09a468a9b4293cd82adf6d6c60a9da82 | Tm9yZGVr
В связи со сменой железа и переходом на LInux с полным отказом от Windows - посещение на форуме будет редким.


Последний раз редактировалось Nordek, 01-07-2019 в 19:27. Причина: bb-code

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

Отправлено: 19:08, 01-07-2019 | #18


Deadooshka


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

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


Nordek, только лишь с кукисами - не работает. Требуется уникальный crumb в урле (он связан с кукисами).

v79italya, он уже установлен в системе (cscript.exe в системной папке). "c:\script.js" - это файл с этим кодом.

Отправлено: 00:13, 02-07-2019 | #19


Старожил


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

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


Sham, спасибо за скрипт. работает замечательно, даже через чур быстро. надеюсь яхоо не забанит) может в коде можно прописать задержку в треть секунды. еще вопрос: в скрипте нет никаких подводных камней, будет скачивать в любом случае?

Nordek, ваш вариант еще не пробовал. позже попробую. спасибо вам.

Iska, спасибо. хорошо что сказали как сделать скрипт. сделал через Notepad++. по двойному клику не сработал, а через ПКМ - открыть с помощью первой же предложенной программой сработало.

у меня был вариант полусырой через макрос. сделал браузер по умолчанию гугл хром и через него скачивал. минус что перед применением макроса надо вручную менять папку для закачек браузера., а потом обратно. приложу файл Excel, только надо авторизоваться на Yahoo.
спасибо всем что довели дело до конца и проблему решили

Последний раз редактировалось v79italya, 02-09-2019 в 11:34.

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

Отправлено: 05:53, 02-07-2019 | #20



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Задать вопрос как через бат файл присвоить два занения и перейти по ссылке zzup Скриптовые языки администрирования Windows 2 20-01-2015 01:45
CMD/BAT - Как из бат-файла проверить наличие файла по ссылке, не скачивая файл ? mitiya Скриптовые языки администрирования Windows 2 27-06-2008 20:50
Как открыть по ссылке файл *.rdp? Rhamzes Вебмастеру 1 15-11-2005 09:05
Можно ли при помощи PHP скачать файл по ссылке вида http://xxxx? (+) Igor_I Вебмастеру 2 12-09-2005 21:31
Клик по ссылке на zip файл в IE pro100_tak Хочу все знать 4 09-12-2004 10:21




 
Переход