Вверх ↑
Этот топик читают: Гость
Ответов: 233
Рейтинг: 12
#121: 2019-01-31 13:55:04 ЛС | профиль | цитата
Netspirit, Спасибо тебе за прекрасный компонент!!! Появилась еще одна проблема... Некоторые страница компонент отображает не полностью

Add(MainForm,3291467,336,189)
{
Width=1166
Height=785
}
Add(CookieManager,4026633,336,245)
{
Name="Ozon"
}
Add(HTTPClient,4482692,553,497)
{
URL="https://www.ozon.ru/category/13003/?mediatype=29527%2C40679%2C40678%2C32637%2C38513%2C32652&page=1&sorting=SORT_TYPE_PRICE_ASC"
UserAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0"
Referer="Referer: https://www.ozon.ru/category/13003/?mediatype=29527,40679,40678,32637,38513,32652&page=1&sorting=SORT_TYPE_PRICE_ASC"
Headers="Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3\r\nUpgrade-Insecure-Requests: 1\r\nTE: Trailers"
CookieManager="Ozon"
link(onFinish,9203477:doCompare,[])
}
Add(StrMask,9203477,609,504)
{
Mask="*<iframe src="/_Incapsula_Resource?SWUDNSAI=*"
link(onTrue,13894018:doSearch,[(657,517)(657,587)])
}
Add(Button,5434464,490,497)
{
Left=10
Top=15
link(onClick,4482692:doLoadString,[])
}
Add(BlockFind,13894018,672,581)
{
IncludeBlock=1
StartBlock="<iframe src=""
EndBlock="""
link(onSearch,8546709:doStrCat,[])
}
Add(StrCat,8546709,728,581)
{
Str1="https://www.ozon.ru"
link(onStrCat,15208269:doLoadString,[])
}
Add(HTTPClient,15208269,784,581)
{
UserAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0"
Referer="https://www.ozon.ru/category/13003/?mediatype=29527,40679,40678,32637,38513,32652&page=1&sorting=SORT_TYPE_PRICE_ASC"
Headers="Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3\r\nConnection: keep-alive\r\nUpgrade-Insecure-Requests: 1"
CookieManager="Ozon"
Point(RawHeaders)
link(onFinish,1696230:doCharset,[])
link(onDownloadProgress,11031158:doAdd,[(828,601)(828,650)])
}
Add(Charset,1696230,847,588)
{
Type=11
link(onCharset,10026230:doCharset,[])
}
Add(Charset,10026230,896,588)
{
Type=7
link(onCharset,4717094:doAdd,[])
}
Add(Memo,11031158,847,644)
{
Left=515
Top=50
Width=90
Height=295
}
Add(Memo,4717094,952,588)
{
Left=5
Top=50
Width=500
Height=685
ScrollBars=2
link(onChange,4864714:doEnum,[])
}
Add(Str_Enum,4864714,1008,588)
{
Delimiter=""
link(onEnum,2825536:doNext,[])
link(String,4717094:Text,[(1014,576)(992,576)(992,635)(958,635)])
}
Add(CounterEx,2825536,1064,588)
{
Max=100000
link(onNext,4187403:doStrCat,[])
}
Add(Label,6991681,1169,588)
{
Left=85
Top=20
Width=126
Height=17
Caption="Реальный content-length "
}
Add(StrCat,4187403,1120,588)
{
Str1="content-length: "
link(onStrCat,6991681:doText,[])
}
Add(Label,2640436,847,693)
{
Left=515
Top=25
Width=75
Height=17
Caption="content-length "
}
Add(Memo,1020024,1267,406)
{
Left=640
Top=50
Width=500
Height=685
Strings=#30: <title>[Error Title]</title>|624: <!--[if lt IE 8]><style type="text/css">.container-inner{display:block;margin:25% 0}.powered-by>.logo{background-image:url('/_Incapsula_Resource?NWFURVBO=images/error_pages/logo.png')}.captcha-btns .refresh{background-image:url('/_Incapsula_Resource?NWFURVBO=images/error_pages/refreshl.png')}.captcha-btns .sound{background-image:url('/_Incapsula_Resource?NWFURVBO=images/error_pages/audio.png')}.captcha-btns .image{background-image:url('/_Incapsula_Resource?NWFURVBO=images/error_pages/text.png')}.captcha-btns .help{background-image:url('/_Incapsula_Resource?NWFURVBO=images/error_pages/help.png')}</style><![endif]-->|25: <style type="text/css">|109: *, *:before, *:after {-webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box}|0:|19: button, input {|23: font-size: 100%; |16: margin: 0;|31: vertical-align: baseline;|30: *vertical-align: middle;|26: line-height: normal;|33: -webkit-appearance: button;|22: cursor: pointer;|25: *overflow: visible;|5: }|0:|37: input[type="text"] {cursor: text}|
}
Add(Label,11953701,1267,357)
{
Left=640
Top=20
Width=137
Height=17
Caption="Здесь происходит разрыв"
}

Должна быть длина страницы 40 294, а отображает только 15 114

Редактировалось 1 раз(а), последний 2019-01-31 13:58:16
карма: 2

0
Ответов: 4621
Рейтинг: 746
#122: 2019-01-31 15:55:42 ЛС | профиль | цитата
У меня не коннектится к этому адресу - выдаёт ошибку (Windows XP). В любом случае после URL->ANSI + UTF8->ANSI длина текста может отличаться.
И да, оригинальный способ узнать длину строки с помощью Str_Enum + CounterEx - а компонент Length для чего придуман?

Referer указывается без слова "Referer: "

Редактировалось 3 раз(а), последний 2019-01-31 15:58:30
карма: 26

0
Ответов: 233
Рейтинг: 12
#123: 2019-01-31 16:19:49 ЛС | профиль | цитата
Netspirit писал(а):
У меня не коннектится к этому адресу - выдаёт ошибку (Windows XP). В любом случае после URL->ANSI + UTF8->ANSI длина текста может отличаться.
И да, оригинальный способ узнать длину строки с помощью Str_Enum + CounterEx - а компонент Length для чего придуман?

Referer указывается без слова "Referer: "

Редактировалось 3 раз(а), последний 2019-01-31 15:58:30


Я пробую скачать сохранением в файл страницу и выводом ее в Memo - результат всегда один, Сохраняет всю страницу а выводит только часть. Но даже не это проблема, а то что почему то именно этот сайт не сохранает куки в файл хотя в компоненте они перебираются ArrayEnum
карма: 2

0
Ответов: 2059
Рейтинг: 131
#124: 2019-01-31 16:54:41 ЛС | профиль | цитата
Сохраняет всю страницу а выводит только часть.

Это беда списка строк.
Книжки большие тоже обрезаются, если через add, или "вставить", только загрузить нормально работает.
Надо сообщение посылать в handle.

Редактировалось 1 раз(а), последний 2019-01-31 17:00:53
карма: 6

0
Ответов: 4621
Рейтинг: 746
#125: 2019-01-31 17:01:44 ЛС | профиль | цитата
Iliya писал(а):
Сохраняет всю страницу а выводит только часть.
Возможно, в тексте есть символ с кодом #0 - после него ничего не отображается.
Iliya писал(а):
почему то именно этот сайт не сохранает куки в файл хотя в компоненте они перебираются ArrayEnum
Надо просмотреть заголовки ответа: может там какое-то своеобразное содержимое заголовков Set-Cookie, которые неадекватно обрабатываются компонентом CookieManager. Выложи содержимое точки RawHeaders после события onHeadersAvailable.

Редактировалось 1 раз(а), последний 2019-01-31 17:02:13
карма: 26

0
Ответов: 233
Рейтинг: 12
#126: 2019-01-31 17:22:26 ЛС | профиль | цитата

HTTP/1.1 200 OK
Cache-Control: no-cache
Connection: close
Content-Length: 831
Content-Type: text/html
Set-Cookie: visid_incap_1101384=BhosdgMgQvCBzgm9QWkhONEEU1wAAAAAQUIPAAAAAAC2yVVDxjEE8dlyzzIVrU5x; expires=Fri, 31 Jan 2020 10:22:58 GMT; path=/; Domain=.ozon.ru
Set-Cookie: incap_ses_377_1101384=j0U9RwvlWGAFGz4b9V87BQ0FU1wAAAAAYb2Xvnu5dHFPet0on+YeIA==; path=/; Domain=.ozon.ru
X-Iinfo: 5-131579686-0 0NNN RT(1548944653445 147) q(0 -1 -1 0) r(0 -1) B12(4,316,0) U10000
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
карма: 2

0
Ответов: 4621
Рейтинг: 746
#127: 2019-01-31 17:27:08 ЛС | профиль | цитата
Хм, да вроде ничего необычного. Ничего не ясно.
карма: 26

0
Ответов: 203
Рейтинг: 2
#128: 2019-02-11 01:32:14 ЛС | профиль | цитата
Еще бы компонент для извлечения данных из json , а так спасибо.

--- Добавлено в 2019-02-11 01:32:15

Еще бы компонент для извлечения данных из json , а так спасибо.

Редактировалось 1 раз(а), последний 2019-02-11 01:32:15
карма: 0

0
Ответов: 537
Рейтинг: 14
#129: 2019-02-11 07:44:03 ЛС | профиль | цитата
json хорошо качает стандартный компонент HTTP_Get
карма: 4

0
Ответов: 203
Рейтинг: 2
#130: 2019-02-11 11:19:07 ЛС | профиль | цитата
Вопрос не в том что бы скачать, а что бы удобно обрабатывать информацию
карма: 0

0
Ответов: 2059
Рейтинг: 131
#131: 2019-02-11 12:24:14 ЛС | профиль | цитата
kaban4ik писал(а):
Вопрос не в том что бы скачать, а что бы удобно обрабатывать информацию

Можно здесь посмотреть, как это делается:
Парсинг JSON
http://www.json.org/
https://devlaz.ru/%D0%BF%D0%B0%D1%80%D1%81%D0%B8%D0%BD%D0%B3-json-%D0%B2-lazarus/
http://qaru.site/questions/1160341/json-parser-in-pascalscript
На всякий случай - конвертер файлов data.bin в читаемый человеком файл json
https://github.com/madwareru/orom-databin-to-json
карма: 6

0
Ответов: 4621
Рейтинг: 746
#132: 2019-02-11 12:47:54 ЛС | профиль | цитата
Предполагаю, для JSON нужна парочка компонентов: JSON_Document (парсер, загрузка/сохранение в текстовом виде) в виде менеджера и JSON_RW (чтение, запись, перебор атрибутов/значений, как клиент к предыдущему).
карма: 26

0
Ответов: 203
Рейтинг: 2
#133: 2019-02-11 22:55:43 ЛС | профиль | цитата
Netspirit, да это было бы идеально.
flint2, Спасибо, пойду почитаю.

Редактировалось 1 раз(а), последний 2019-02-11 22:56:33
карма: 0

0
Ответов: 66
Рейтинг: 1
#134: 2019-02-19 17:33:20 ЛС | профиль | цитата
На твоём FPC ошибка компиляции

hiHTTPClient.pas(430,10) Error: Identifier not found "StreamShare"
hiHTTPClient.pas(430,10) Error: class identifier expected
hiHTTPClient.pas(563,48) Error: Identifier not found "StreamShare"
hiHTTPClient.pas(765,18) Error: Identifier not found "CodePage1ToCodePage2"
карма: 0

0
Ответов: 4621
Рейтинг: 746
#135: 2019-02-19 18:15:41 ЛС | профиль | цитата
"StreamShare.ToString" у тебя получилось после замены "ToString" на "Share.ToString". Замени "StreamShare.ToString" на "StreamToString" (или на "StreamToStr").

Напиши в uses:
uses
Kol, Share, WinInet, WinHTTP, Windows, Debug, URI, MIMETypes,
hiCookieManager {$ifndef FPC_NEW}, hiCharset{$endif};

В строке 765 вместо
Val := CodePage1ToCodePage2(Val, CP_ACP, CP_UTF8);
сделай
Val := {$ifdef FPC_NEW}StringToUTF8(Val){$else}CodePage1ToCodePage2(Val, CP_ACP, CP_UTF8){$endif};

Это всё только для FPC ANSI 32bit. Для остальных режимов там нужны другие переделки.

Редактировалось 3 раз(а), последний 2019-02-19 18:17:56
карма: 26

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