Вверх ↑
Этот топик читают: Гость
Ответов: 537
Рейтинг: 14
#1: 2019-12-16 02:15:36 ЛС | профиль | цитата
Add(HTTP_Get,8785215,224,98)
{
URL="https://ahrefs.com/batch-analysis?export=1"
UserAgent="Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"
Method=1
Point(PostData)
Point(Headers)
link(onDownload,11076440:doDecompress,[])
}
Add(GZIP,11076440,364,98)
{
}
Add(StreamConvertor,11980564,294,133)
{
Mode=6
}
Вот набросок схемы, данные приходят в формате GZIP, если указать файл, то данные скачиваются в файл .csv, это текст в общем, ответ от сервера приходит в виде GZIP, не получается ответ от сервера распаковать и получить текст

--- Добавлено в 2019-12-16 02:48:20

Netspirit ваш компонент по мне так только хорошо файлы на сервер загружает, а авторизация, если куки добавить, то совсем не работает, по этому использую http_get mod, могу схему дать полную ЛС потому как доступ к этому сайту очень дорогой. Две схемы покажу, с http_get mod post запрос с куки выполняется, а с вашим компонентом нет. Я уже много раз писал, а вы писали куки не такие и такого не может быть, чтобы ты с таких куки зашел на сайт" По-этому и не использую ваш компонет. Могу в ЛС 2 примера показать, где http_get mod заходит на сайт с куки, а ваш компонент нет. И еще, например для парсера, ваш компонет ведет странно, если нужна цикличность, например : парсим данные, берем первую ссылку => берем следующию и тут стоп, хотя стандартный http_get, достаточно одного запроса, почему то HTTPClient не реагирует на запрос, решил это методом случайных наблюдений, если поставить так
Add(MainForm,2953706,35,112)
{
}
Add(HTTPClient,1335444,252,126)
{
link(onFinish,11044136:doEvent1,[])
}
Add(Timer,8516692,329,140)
{
Enable=1
AutoStop=1
link(onTimer,2536885:doTimer,[])
}
Add(Hub,11044136,301,133)
{
link(onEvent1,1001157:doSearch,[(322,139)(322,97)])
link(onEvent2,8516692:doTimer,[])
}
Add(BlockFind,1001157,329,91)
{
@Hint=#18:Тут данные получил|
AddHint(12,-32,116,13,@Hint)
}
Add(Timer,2536885,406,140)
{
@Hint=#49:Без этого таймера остановится после первой ссылки|
Interval=10
Enable=1
AutoStop=1
link(onTimer,12382268:In,[])
AddHint(74,-44,181,26,@Hint)
}
Add(StrList,3848283,189,119)
{
Strings=#8:Ссылка 1|8:Ссылка 1|8:Ссылка 3|0:|
Point(onGetString)
Point(doGetString)
link(onGetString,1335444:doLoadString,[])
}
Add(VisualStrings,9465141,133,147)
{
Lines=#1:0|
Width=18
Point(doText)
Point(onText)
link(onText,6549144:doEvent1,[])
}
Add(Hub,6549144,161,147)
{
link(onEvent1,3848283:doGetString,[])
link(onEvent2,3848283:doDelete,[(182,160)(182,139)])
}
Add(LineBreak,7613936,84,147)
{
link(Out,9465141:doText,[])
Primary=[12382268,371,-7]
}

то будет работать по циклу

--- Добавлено в 2019-12-16 03:06:34

Я не критикую и очень ценю вашу работу. Давайте я в личку скину вам пример схем, посмотрите, почему с http_get mod все работает, а ваш компонент в упор куки не понимает и шлет запросы или без них, или может уродует их так, что сервер не понимает. Ставил и utf-8 и ansi, по барабану вообще все. Если захотите разобраться, скину вам и доступ и пример схем, где данные получаю, а где нет.

--- Добавлено в 2019-12-16 03:12:47

И RespCharset не работает, я так понял если скачивается страница html в кодировке utf-8, так компонент должен показать ответ от сервера в правильной, читабельной кодировке, все равно, если ответ в utf-8 нужно ставить Charset
Я последнее время делаю очень много программ, может я не все понял с вашим компонентом. Мои наблюдения я вам написал.

Редактировалось 6 раз(а), последний 2019-12-16 03:25:39
карма: 4

0
файлы: 1http_get mod.zip [4.6KB] [436]
Ответов: 4628
Рейтинг: 749
#2: 2019-12-16 13:14:47 ЛС | профиль | цитата
Sersey писал(а):
данные приходят в формате GZIP

На сайтах, требующих авторизации, ничего тестировать не могу. Ищи общедоступные сайты, делай минимальную схему, чтобы показать что не работает. Метод doDecompres принимает на вход строку, поэтому StreamToStr необходим. Можно использовать doDecompressStream, но надо указывать Count. Также в случае проблем надо смотреть событие onError.
Sersey писал(а):
ваш компонет ведет странно, если нужна цикличность
У тебя "цикличность" организована неправильно. Единственный правильный способ цикла с завершением по условию - использование компонента Repeat на метод doLoadXXX.
Но в твоём случае это не требуется. Для перебора списка ссылок используется компонент ArrayEnum, а не та лабуда с doGetString+doDelete.
Sersey писал(а):
если скачивается страница html в кодировке utf-8, так компонент должен показать ответ от сервера в правильной, читабельной кодировке
Должен. Если сервер отправляет в ответе заголовок "Content-Type" с указанием кодировки. Если нет - сменить "Auto" на "UTF-8" и не нужно других компонентов.
Также будет работать только если страница в UTF-8 содержит только английские и русские символы, а не какие-нибудь китайские, арабские или любые другие (более точно: не входящие в "язык для программ, не поддерживающих Юникод" в "Панели управления").

Sersey писал(а):
а авторизация, если куки добавить, то совсем не работает, по этому использую http_get mod
В моде добавлено только свойство Headers, куда ты и добавляешь свои куки? И что, если в HTTPClient их добавить в Headers - не то же самое?

Редактировалось 3 раз(а), последний 2019-12-16 13:27:10
карма: 26

0
Ответов: 537
Рейтинг: 14
#3: 2019-12-26 18:19:28 ЛС | профиль | цитата
Netspirit писал(а):
У тебя "цикличность" организована неправильно.

Нужно получить первую ссылку, сделать паузу потом вторую т т.д. Как же это можно сделать с помощью ArrayEnum?

Netspirit писал(а):
В моде добавлено только свойство Headers, куда ты и добавляешь свои куки? И что, если в HTTPClient их добавить в Headers - не то же самое?

В том и дело, что не то же самое, как будто он куки совсем не отправляет. Если бы посмотреть, что на самом деле он отправляет и сравнить с http_get mod, Fiddler не видит, что отправляет программа.
карма: 4

0
Ответов: 4628
Рейтинг: 749
#4: 2019-12-27 12:17:44 ЛС | профиль | цитата
Sersey писал(а):
Нужно получить первую ссылку, сделать паузу потом вторую т т.д.
Паузу для чего?
карма: 26

0
4
Сообщение
...
Прикрепленные файлы
(файлы не залиты)