print("s \t status \t partial") io.output("quotes1.dwn") while true do local s, status, partial = c:receive(2^10) print(s, status, partial) io.write(s or partial) if status == "closed" then break end end
Получаю ошибку: lua: trySocket.lua:5: Valid name, no data record of requested type
Подскажите, знающие люди, я неверно вбиваю host, file, нужно правильно отформатировать путь или в чем-то еще? Пробовал форматировать путем string.format("%q", host).
Что видно беглым взглядом: 1) после http: два прямых слэша, а не обратных 2) в GET заголовок Host: обязателен 3) финам не любит автоматизаторов, может потребоваться весьма правдоподобно притворяться браузером.
Anton написал: Что видно беглым взглядом: 1) после http: два прямых слэша, а не обратных 2) в GET заголовок Host: обязателен 3) финам не любит автоматизаторов, может потребоваться весьма правдоподобно притворяться браузером.
Спасибо за ответ. 1) исправление слэшей проблему не решило 2) Получаю ошибку в строке "local c = assert(socket.connect(host, 80))" То есть до GET дело не доходит. Нет коннекта к серверу
А стоп, вы ж голый сокет используете. Тогда там посложней процедура, коннектиться надо к export.finam.ru без http:// в начале и без пути в конце, а в GET посылать путь (то что после после export.finam.ru).
А стоп, вы ж голый сокет используете. Тогда там посложней процедура, коннектиться надо к export.finam.ru без http:// в начале и без пути в конце, а в GET посылать путь (то что после после export.finam.ru).
Спасибо. Теперь коннектится. Но не качает:
>lua -e "io.stdout:setvbuf 'no'" "trySocket.lua" tcp{client}: 023A8C80 s status partial nil closed >Exit code: 0
На первом же проходе цикла while получаю статус "Closed" и вылетаю
Со слэшем вроде правильнее, насколько память мне не врет. А вообще если задача именно скачать, а не потренироваться, лучше перейти на socket.http, как пойдут данные это будет только начало, там начнутся редиректы, куки, чанкед контент и все такое, что на форуме толком не обсудить все равно.
Мне нужно скачать для дальнейшего анализа. Свежие файлы докачиваться будут регулярно. Мне не принципиально. Если есть лучший способ, то расскажите. Если можно, с примерами или ссылками.