On-line: Мирослав, гостей 0. Всего: 1 [подробнее..]
АвторСообщение



Пост N: 65
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 24.10.12 15:55. Заголовок: Работа с HTML(Сайты в Интернет)


Друзья , подскажите в каком направлении рыть ...
Есть сайт в интернете . Там поле для ввода строки поиска . .... Вводим строку . Сайт выдаёт (если найдёт у себя в базе) какую-то информацию в виде HTML-странички ....
Задача такая : Программа на Harbour должна делать запрос на сайт и полученную информацию отображать в своём окне . При этом нужно кой-чего из этой информации убрать или заменить некоторые слова ( сайт буржуйский ) . Хочу прилепить как-бы On-Line поиск .... но чтоб данные брать с чужого сайта ....
Какие будут мысли ? Или не связываться с такой задачей ?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 47 , стр: 1 2 3 All [только новые]


постоянный участник




Пост N: 2384
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 24.10.12 16:09. Заголовок: Смотри тему http://c..


Смотри тему
http://clipper.borda.ru/?1-3-0-00000218-000-0-0-1342804573

AlexMyr пишет:

 цитата:
Посмотри на harbour\examples\guestbk , может на что и натолкнет, сам не пробовал.



Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 628
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 24.10.12 16:38. Заголовок: Для Harbour вот (как..


Для Harbour вот (как раз поисковик задействован)

harbour\contrib\hbtip\tests\loadhtml.prg

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2387
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 24.10.12 18:14. Заголовок: AlexMyr пишет: harb..


AlexMyr пишет:

 цитата:
harbour\contrib\hbtip\tests\loadhtml.prg



Как хоть собрать этот пример ?
Опять забыл как это делать....

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 796
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 24.10.12 18:29. Заголовок: Может так: hbmk2 loa..


Может так: hbmk2 loadhtml.prg ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2388
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 24.10.12 21:37. Заголовок: PSP пишет: Может та..


PSP пишет:

 цитата:
Может так: hbmk2 loadhtml.prg ?



А что за файлы в папке лежат ?
hbtip.hbc
hbtipssl.hbc
hbmk.hbm

Я через них пытался собрать...


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2389
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 24.10.12 21:38. Заголовок: PSP пишет: Может та..


PSP пишет:

 цитата:
Может так: hbmk2 loadhtml.prg ?



Выдает ошибку при выполнении:


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 629
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 25.10.12 08:37. Заголовок: Проверил у себя, раб..


Проверил у себя, работает.
Version: Harbour 3.2.0dev (Rev. 18385)
Compiler: MinGW GNU C 4.7 (32-bit)
Platform: Windows XP 5.1.2600 Service Pack 3

C:\dev\_svn\harbour\contrib\hbtip\tests\>loadhtml.exe 

56024 bytes received
Search http://www.google.de/webhp?hl=en&tab=ww
Translate http://translate.google.de/?hl=en&q=Harbour&um=1&ie=UTF-8&sa=N&tab=wT
Books http://www.google.de/search?hl=en&q=Harbour&um=1&ie=UTF-8&tbo=u&tbm=bks&so
urce=og&sa=N&tab=wp
Shopping http://www.google.de/products?hl=en&q=Harbour&um=1&ie=UTF-8&sa=N&tab=wf

Blogger http://www.blogger.com/?tab=wj
Reader http://www.google.de/reader/view/?hl=en&tab=wy
Photos http://picasaweb.google.de/lh/view?hl=en&q=Harbour&um=1&ie=UTF-8&sa=N&tab
=wq
Videos http://www.google.de/search?hl=en&q=Harbour&um=1&ie=UTF-8&tbo=u&tbm=vid&s
ource=og&sa=N&tab=wv
Even more » http://www.google.de/intl/en/options/


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 630
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 25.10.12 08:49. Заголовок: да, вот результат, к..


да, вот результат, к-й в файле Google.html



Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 66
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 25.10.12 11:39. Заголовок: Спасибо за подсказку..


Спасибо за подсказку ! Теперь осталось дело за малым - разобраться как сформировать строку запроса к "их" базе .... Полученный HTML-код разобрать тоже сложно ....но можно :)

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2519
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 25.10.12 12:40. Заголовок: Можно ли подобными з..


Можно ли подобными запросами выбирать курсы валют ЦБ/НБУ, учетные ставки, индекс инфляции и тому подобную информацию ? Если можно, то с каких сайтов ?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 631
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 25.10.12 13:41. Заголовок: Pasha пишет: Можно ..


Pasha пишет:

 цитата:
Можно ли подобными запросами выбирать курсы валют ЦБ/НБУ, учетные ставки, индекс инфляции и тому подобную информацию ? Если можно, то с каких сайтов ?

Я думаю можно.

Вот код выдергивает страницу с курсами с нбу, потом только разобрать таблицу с курсами и вывести в удобной форме:

/* 
* $Id: loadhtml.prg 18289 2012-10-11 16:16:32Z vszakats $
*/

/*
* Sends a query to Google and displays the Links from the response HTML page
*/

#require "hbtip"

PROCEDURE Main

LOCAL oHttp, cHtml, aLink, oNode, oDoc

oHttp := TIpClientHttp():new( "http://www.bank.gov.ua/control/uk/curmetal/detail/currency?period=daily" )

/* Connect to the HTTP server */
IF ! oHttp:open()
? "Connection error:", oHttp:lastErrorMessage()
QUIT
ENDIF

/* download the Google response */
cHtml := oHttp:readAll()
oHttp:close()
? Len( cHtml ), "bytes received "

oDoc := THtmlDocument():new( cHtml )

oDoc:writeFile( "Google.html" )

/* ":a" retrieves the first <a href="url"> text </a> tag */
oNode := oDoc:body:a
? oNode:getText( "" ), oNode:href

/* ":divs(5)" returns the 5th <div> tag */
oNode := oDoc:body:divs( 5 )

/* "aS" is the plural of "a" and returns all <a href="url"> tags */
aLink := oNode:aS

FOR EACH oNode IN aLink
? HtmlToOem( oNode:getText( "" ) ), oNode:href
NEXT

RETURN


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2522
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 25.10.12 14:02. Заголовок: Спасибо. Заодно я об..


Спасибо. Заодно я обратил внимание на незнакомую мне директиву hbmk2 #require.

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 25.10.12 15:12. Заголовок: веб-сервис лучше loadhtml


Для получения курсов валют есть веб-сервисы (например http://www.cbr.ru/scripts/Root.asp?Prtid=DWS)
и поддержка SOAP , пример в \contrib\hbwin\testole.prg
Придется, правда, на комп дополнительно установить пакет SOAP ToolKit 3.0 от MS

Спасибо: 0 
Цитата Ответить



Пост N: 632
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 25.10.12 16:47. Заголовок: Pasha пишет: Заодно..


Pasha пишет:

 цитата:
Заодно я обратил внимание на незнакомую мне директиву hbmk2 #require.

Директива позволяет запускать prg как скрипт, но для этого как я понял нужно собрать hbrun c -shared.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 121
Зарегистрирован: 16.12.08
ссылка на сообщение  Отправлено: 25.10.12 17:44. Заголовок: AlexMyr пишет: /* ..


AlexMyr пишет:

 цитата:
/*
* $Id: loadhtml.prg 18289 2012-10-11 16:16:32Z vszakats $
*/

/*
* Sends a query to Google and displays the Links from the response HTML page
*/

#require "hbtip"

PROCEDURE Main

LOCAL oHttp, cHtml, aLink, oNode, oDoc

oHttp := TIpClientHttp():new( "http://www.bank.gov.ua/control/uk/curmetal/detail/currency?period=daily" )

/* Connect to the HTTP server */
IF ! oHttp:open()
? "Connection error:", oHttp:lastErrorMessage()
QUIT
ENDIF

/* download the Google response */
cHtml := oHttp:readAll()
oHttp:close()
? Len( cHtml ), "bytes received "

oDoc := THtmlDocument():new( cHtml )

oDoc:writeFile( "Google.html" )

/* ":a" retrieves the first <a href="url"> text </a> tag */
oNode := oDoc:body:a
? oNode:getText( "" ), oNode:href

/* ":divs(5)" returns the 5th <div> tag */
oNode := oDoc:body:divs( 5 )

/* "aS" is the plural of "a" and returns all <a href="url"> tags */
aLink := oNode:aS

FOR EACH oNode IN aLink
? HtmlToOem( oNode:getText( "" ) ), oNode:href
NEXT

RETURN


Этот код работает только тогда когда нет ошибки 302 (перенаправление). Если ошибка 302 можно скачать другим способом:

 
Пример:

IF oHttp:open(cUrl)
cHtml := oHttp:readAll()
if oHttp:nReplyCode == 302
_resGetFile := GETINETFILE(cFileURL,сFileName)
else
......
endif
endif
......
#PRAGMA BEGINDUMP
#include <windows.h>
#include <wininet.h>
#include "hrbdll.h"
#include "hbapi.h"
#include "hbapiitm.h"
#include "hbapierr.h"

HB_FUNC( GETINETFILE )
{
HINTERNET hSession;
HINTERNET hURL;
HANDLE hFile;
char * sAppName= "GetPublicIpAddress";
char * FileURL;
char * _FileName ;
char Buffer[1024];
DWORD dwRead =0;
DWORD dwWrite = 0;
BOOL bFound = FALSE;

FileURL = hb_parc(1);
_FileName = (char *) hb_parc(2);
hSession = InternetOpen(sAppName, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0 );
if (hSession)
{
hURL = InternetOpenUrl(hSession, FileURL, NULL, 0, 0, 0);
if (hURL)
{
hFile = CreateFile(_FileName, GENERIC_WRITE, NULL, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
while (InternetReadFile(hURL, Buffer, 1024, &dwRead) == TRUE)
{
if ( dwRead == 0)
break;
WriteFile(hFile, Buffer, dwRead, &dwWrite, NULL);
bFound = TRUE;
}
CloseHandle(hFile);
InternetCloseHandle(hURL);
}
InternetCloseHandle(hSession);
}
hb_retl(bFound);

}
#PRAGMA ENDDUMP




Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 21
Зарегистрирован: 07.06.08
ссылка на сообщение  Отправлено: 06.12.12 10:15. Заголовок: Класс TIPClientHTTP(..


Класс TIPClientHTTP() в Наrbour 3.2 и xHarbour 1.2.1 содержит одну недоработку – указана длина буфера при чтении строки 500, а это неправильно, поскольку размер заголовка (hHeaders) часто превышает эту величину. Отсюда и все проблемы. Кроме того класс TIPClientHTTP() в Наrbour 3.0 и 3.1 содержит ошибку, которая исправлена в Наrbour 3.2, она может возникнуть при сложных запросах (например массив ХЭШ с login и password).
Мои действия и как я это обошел:
Работаю на xHarbour 1.2.1 (CRM и 2 сервера leto с программой синхронизации между ними) и xHarbour 1.0.0 (бухгалтерия). Решаю следующую задачу – передачу и прием данных (синхронизация ) таблиц DBF и данных на WEB по протоколу HTTP:
1. Обращение к странице авторизации программы для получения Cookie и Token из данных страницы.
2. Автоизация в WEB программе - Передача (POST) Login и Password , Cookie и Token на страницу авторизации и получения кода ответа nReplyCode : =302,cReplyDescr : "Found" и нового Cookie .
3. Обращение GET по адресу таблица.json и получение json
Мои действия:
1. Беру xHarbour 1.2.1, класс TIPClientHTTP(). Получаю – что класс нерабочий, а именно – для чтения данных в классе используется метод ::InetRecvLine из класса tIPClientHTTP (соответственно INETRECVLINE в inet.c), а он работает некорректно. Вставляет пустую строку в середине заголовка (:hHeaders), теряя часть заголовка (в моем случае Cookie) и кидая остаток заголовка в данные. Беру копию метода POST и меняю ::InetRecvLine на ::InetRecvALL – вытягиваю Cookie. После этого ставлю
:hFields["X-Requested-With"]:="XMLHttpRequest"
:setCookie(sess_Cookies)
Даю GET() и получаю json
2. Беру Наrbour 3.0 и Наrbour 3.1 , класс TIPClientHTTP() – получаю ошибку
Error BASE/1123 Argument error: HB_HKEYAT
Смотрю ChangeLog – ошибка исправлена 2012-07-30 (то есть в 3.2)
3. Беру Наrbour 3.2 последней сборки – ошибка Наrbour 3.1 действительно исправлена, но json получить не могу. Оказалось, что работающий код в xHarbour 1.2.1
oxml:=THtmlDocument():new(Cdata)
oNode := oxml:findFirst( 'input', 'name','authenticity_token')
a_token :=onode:getattribute('value')
в Наrbour 3.2 почему-то не работает. Достаю 'authenticity_token' руками и получаю ту же проблему что и Наrbour 3.1 - ::InetRecvLine режет заголовок пополам и теряет Cookie. После разбора текстов все-таки догадался изменить везде при вызове - ::InetRecvLine в классе TIPClientHTTP() размер буфера с 500 на 1000
cLine := ::inetRecvLine( ::SocketCon, @nPos, 1000 )

После этого получил json. Заголовки (:hHeaders) тоже нормально разбираются.

Необходимо исправить размер буфера при вызове :inetRecvLine в дистрибутиве Наrbour с 500 на 1000.


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 145
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 01.06.14 11:46. Заголовок: Возвращаясь к старой..


Возвращаясь к старой теме , в примере LoadHTML.PRG есть код по поиску и доступу к тегам .... там расписано как брать ссылки ...
Подскажите синтаксис и аогоритм по выуживанию данных из таблицы внутри HTML-страницы : <table и соответственно строк с данными из жтой таблицы .
Вот такой примерно кусок текста из такой страницы :

......
<table class="list">
<tr class="alternating">
<td>0001124005 <---- Эти данные нужно считывать
</td>
</tr>
<tr class="alternating">
<td>0001124006 <---- Эти данные нужно считывать
</td>
</tr>
<tr class="alternating">
<td>02B911023D <---- Эти данные нужно считывать
</td>
</tr>
........ <---- и так далее по таблице

</table>
.........

То есть вопрос в том , как добратьться до объекта <table ? , и соответственно считать в массив все строки с нужными данными ?
Буду благодарен за хоть какую-то информацию . Таблиц <tablе в тексте несколько , но добраться нужно к определенной (она по порядку всегда на одном и том-же месте ) число строк может быть разным ...




Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 289
Зарегистрирован: 16.12.08
ссылка на сообщение  Отправлено: 01.06.14 14:14. Заголовок: Приблизительно будет..


Приблизительно будет так:


oHtmlDoc:readFile( "HTML\\test.html")
aTableNodes := oHtmlDoc:body:tableS // Возвращает все ноди для tags table

FOR EACH oNodeTable IN aTableNodes // пробегаем по всем таблицам
IF 'class="list"' IN ALLTRIM(oNodeTable:attrToString()) // наша таблица

FOR EACH otdNode1 IN oNodeTable:tdS // считываем tags td
cAllData:=ALLTRIM(HtmlToAnsi(otdNode1:getText(""))) // считываем наш текст
........ // что-то с ними делаем
NEXT

ENDIF
NEXT

можна вместо attrToString() использовать :getAttribute( "class" )

если есть tr c разными классами тогда нужно считать сначала tr, найти ссответсвующий класс (атрибут) а потом уже считывать td и соответсвенно данные.



Спасибо: 1 
ПрофильЦитата Ответить



Пост N: 146
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 01.06.14 18:18. Заголовок: Есть ошибки и недост..


Есть ошибки и недостаточность кода :

oHtmlDoc:readFile( "HTML\\test.html")
aTableNodes := oHtmlDoc:body:tableS // Возвращает все ноди для tags table
// oNodeTable - откуда взялось ?
FOR EACH oNodeTable IN aTableNodes // пробегаем по всем таблицам
IF 'class="list"' IN ALLTRIM(oNodeTable:attrToString()) // наша таблица
// otdNode1 -откуда взялось ?
FOR EACH otdNode1 IN oNodeTable:tdS // считываем tags td
cAllData:=ALLTRIM(HtmlToAnsi(otdNode1:getText(""))) // считываем наш текст
........ // что-то с ними делаем
NEXT

ENDIF
NEXT

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 290
Зарегистрирован: 16.12.08
ссылка на сообщение  Отправлено: 01.06.14 19:01. Заголовок: Ошибок думаю нету та..


Ошибок думаю нету так как приблизительный код работает. Код для xHarbour.
Для Harbour IN -> $. Всё остальное работало в Harbour.

в начале объявите

LOCAL aTableNodes:={}, oNodeTable, otdNode1


Посмотрите описание класса THtmlNode() в доке по xHarbour. Он должен быть аналогичный Harbour.


Спасибо: 1 
ПрофильЦитата Ответить





Пост N: 292
Зарегистрирован: 16.12.08
ссылка на сообщение  Отправлено: 02.06.14 12:42. Заголовок: Softlog86 пишет: Е..


Softlog86 пишет:

 цитата:

Есть ошибки и недостаточность кода :



Разобрались? Или объяснить более детально?



Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 147
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 02.06.14 16:57. Заголовок: В принципе разобралс..


В принципе разобрался . Но есть ещё вопросы .Пока синтаксис не ложится в голову :)
Не знаю как из таблицы <table вытащить данные по конкретным столбцам (3 и 4 колонка )


<h3>Vэsledek hledбnн pro шetмzec - CA1035IR </h3>
<table style='margin-top:2px;'> <--------- НАША ТАБЛИЦА
<tbody>
<th>Nalezenй инslo
<th>Firma
<th>Nalezenб polo_ka
<th>Dodavatel
<th>Nбzev polo_ky
<th>MC
<th>MC + Dph
<tr>
<td>CA1035IR
<td>HC-PARTS
<td style='background:PaleGreen;'><a href='polozka.php?id_polozky=693443'>CA1035IR</a> <---- Это нам нужно то есть 3 и 4 колонка
<td style='background:PaleGreen;'>HC-PARTS <---- И это нам нужно
<td style='background:PaleGreen;'>alternбtor
<td style='background:PaleGreen;' align=right>6 622,00
<td style='background:PaleGreen;' align=right>8 013,00
<tr>
<td>CA1035IR
<td>HELLA
<td style='background:PaleGreen;'><a href='polozka.php?id_polozky=2418964'>860559</a> <---- Это нам нужно то есть 3 и 4 колонка
<td style='background:PaleGreen;'>PRESTOLITE ELECTRIC <---- И это нам нужно
<td style='background:PaleGreen;'>alternбtor
<td style='background:PaleGreen;' align=right>0,00
<td style='background:PaleGreen;' align=right>0,00
<tr>
<td>CA1035IR
<td>HELLA
<td style='background:PaleGreen;'><a href='polozka.php?id_polozky=1393149'>437442</a> <---- Это нам нужно то есть 3 и 4 колонка
<td style='background:PaleGreen;'>VALEO <---- И это нам нужно
<td style='background:PaleGreen;'>alternбtor
<td style='background:PaleGreen;' align=right>20 445,00
<td style='background:PaleGreen;' align=right>24 738,00

.....................................

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 293
Зарегистрирован: 16.12.08
ссылка на сообщение  Отправлено: 02.06.14 18:40. Заголовок: Softlog86 пишет: В ..


Softlog86 пишет:

 цитата:
В принципе разобрался . Но есть ещё вопросы .Пока синтаксис не ложится в голову :)
Не знаю как из таблицы <table вытащить данные по конкретным столбцам (3 и 4 колонка )



Да там нет ничего сложного. Заполняем масивы объектов и проходим по массиву, берём объект и используя его методы достаём данные.

Если Вы сами формируете html файл то лучше его наполнить, например добавить атрибуты : <td class="" id=""></td> чтобы можна их было как-то отличить.
Если такое невозможно, ну тогда :

1. Мы нашли свою таблицую
2. Считываем все <tr> в масив, проходим по каждому <tr> :
FOR EACH otrNode IN oNodeTable:trS

3. Считываем все <td> для конкретной <tr> в масив
FOR EACH otdNode IN otrNode:tdS

4. проходим по массиву <td> . Если не можем отличить столбцы по уникальным атрибутам , тогда проще счётчик сделать. Когда счётчик будет 3 и 4 данные выбираем.
В случае 3 столбца нужно опять считать масив тегов <a> и вытянуть атрибут href.
NEXT
NEXT


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 148
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 03.06.14 10:50. Заголовок: Тяжко пока писать ....


Тяжко пока писать .... ошибаюсь часто , особо не зная свойств объектов :(

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 234
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 10.05.15 02:21. Заголовок: как добыть строку ..


как добыть строку что указана в img src= ???
Вот эта часть в тексте HTML страницы :

1 <td align=center><img src='foto/123.jpg'>
2 <td align=left><a href='polozka.php?id_polozky=3045032'><nobr>132216</nobr></a>


:href - (строка 2 ) то есть ссылки получать умею
Как добраться к <img src= , то есть получить его значение (foto/123.jpg)
??

onode:src или onode:img (по аналогии с :href) - не проодит - пустые значения выдаёт


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 316
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 10.05.15 03:23. Заголовок: Если сайт идет на IE..


Если сайт идет на IE, то можно
1. открыть IE как ActiveX и встроить в свое окно
2. средствами DOM открываем этот сайт и мониторим его(по таймеру например)

Ежели под IE не идет делаем тоже самое напр. на JS

Или чего-то другое надо ?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 235
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 10.05.15 11:47. Заголовок: Это нужно средствами..


Это нужно средствами Harbour + MiniGui cделать . Разобрать полученную страницу ....
Loadhtml.prg как пример .

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 132
Зарегистрирован: 21.04.13
ссылка на сообщение  Отправлено: 10.05.15 15:31. Заголовок: <img src='foto/123.jpg'>


<img src='foto/123.jpg'>
1) Может быть так ?
oDataset := oDoc1:findfirst( "img","src",@cValue,@cData)

2) В исходнике документа сделать замену 'foto/' на 'foto-'
после определения значений - обратную замену ( м.б. проблема в символе / )

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 326
Зарегистрирован: 16.12.08
ссылка на сообщение  Отправлено: 10.05.15 19:06. Заголовок: подключаем hbtip. к..


подключаем hbtip.

код:

LOCAL otdNode1, oNode, oImg_1
LOCAL cImage_path
....

FOR EACH otdNode1 IN oNode:tdS
FOR EACH oImg_1 IN otdNode1:imgS
......
cImage_path := oImg_1:getAttribute( "src" )
......
NEXT
NEXT


Спасибо: 1 
ПрофильЦитата Ответить





Пост N: 227
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 05.10.19 22:39. Заголовок: Как правильно составить запрос к https ?


Соединяюсь по 443(https) порту, использую синтаксис запроса HTTP, сервер возвращает ответ:

 цитата:

HTTP/1.1 400 Bad Request
Server: nginx
Date: Sat, 05 Oct 2019 19:34:42 GMT
Content-Type: text/html
Content-Length: 150
Connection: close

<html>
<head><title>400 Bad Request</title></head>
....



Вероятно требуется как то подключать сертификат ?
Какой формат запроса https ?

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 231
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 09.10.19 16:41. Заголовок: Неужели никто с http..


Неужели никто с https не работает ? Сейчас большинство сайтов переведены на этот протокол... может есть где примеры глянуть ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7106
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 09.10.19 17:10. Заголовок: MIKHAIL пишет: Неу..


MIKHAIL пишет:

 цитата:

Неужели никто с https не работает ?


Погугли
Harbour + Https

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6472
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 09.10.19 17:18. Заголовок: MIKHAIL пишет: Неуж..


MIKHAIL пишет:

 цитата:
Неужели никто с https не работает ?


Попробуй поиск в инете - harbour + https

Вот здесь смотри - http://www.kresin.ru/hrbfaq_3.html#Doc13_15
// Это 2-й поток 
Function GetData( lEnd )
Local nCount := 0, hSocket, cUrl, cServer, cBuf, aRes

cServer := "clipper.borda.ru"
cURL := "GET http://" + cServer + "/ HTTP/1.1" +Chr(13)+Chr(10)
cURL += "Host: " + cServer + Chr(13)+Chr(10)
cURL += "User-Agent: test_util"+Chr(13)+Chr(10)
cUrl += Chr(13)+Chr(10)


А по моему вообще очень трудно работать с https через Harbour.
Судя по реакции на форуме - здесь таких умельцев нет.


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 232
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 09.10.19 18:34. Заголовок: Andrey я так и рабо..


Andrey я так и работаю с http, а вот https не пашет, выше ответ сервера приводил. Я полагаю требуется подключить ssl сертификат к запросу. А вот примеров не найти что то...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6473
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 09.10.19 19:57. Заголовок: MIKHAIL пишет: Я по..


MIKHAIL пишет:

 цитата:
Я полагаю требуется подключить ssl сертификат к запросу.


У себя в проге обновление качаю с сайта через внешнюю программу на C#, соединяюсь по https !
Прогу писал не я.
Подключить сертификат в Харборе даже и не знаю как. Наверное очень трудоёмко это...


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 233
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 10.10.19 07:02. Заголовок: Andrey пишет: У себ..


Andrey пишет:

 цитата:
У себя в проге обновление качаю с сайта через внешнюю программу на C#, соединяюсь по https !


Ну вот я так же извратился, только через промежуточный сервер, который принимает http запрос, далее скипт на php получает данные с нужного https ресурса... Но все же хочется без костылей...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1562
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 10.10.19 09:16. Заголовок: В сырцах харбора пос..


В сырцах харбора посмотрите contrib\hbssl. Там в папке tests есть примеры.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7108
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.10.19 09:28. Заголовок: PSP пишет: В сырцах..


PSP пишет:

 цитата:
В сырцах харбора посмотрите contrib\hbssl. Там в папке tests есть примеры.


с языка снял

PS
Hbcurl умеет по Https

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 234
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 10.10.19 09:31. Заголовок: PSP пишет: В сырцах..


PSP пишет:

 цитата:
В сырцах харбора посмотрите contrib\hbssl. Там в папке tests есть примеры.

Спасибо, как раз уже посмотрел, все заработало, в сокращенном виде выглядит так

 цитата:

#require "hbssl"

#define CRLF Chr( 13 ) + Chr( 10 )

PROCEDURE Main()
LOCAL ssl_ctx
LOCAL ssl
LOCAL socket
LOCAL buffer
LOCAL tmp

hb_inetInit()
socket := hb_inetCreate()
? hb_inetTimeout( socket, 2500 )
? hb_inetConnect( "www.fortify.net", 443, socket )
? hb_inetErrorCode( socket )
SSL_init()

? "SSL_CTX_NEW", ssl_ctx := SSL_CTX_new()
? "SSL_NEW", ssl := SSL_new( ssl_ctx )
? "INET FD", hb_inetFD( socket )
? "SSL_SET_FD", SSL_set_fd( ssl, hb_inetFD( socket ) )

? "SSL_CONNECT", tmp := SSL_connect( ssl )
? "SSL_GET_ERROR", SSL_get_error( ssl, tmp )


? "SSL_WRITE", tmp := SSL_write( ssl, "GET / http/1.1" + CRLF + "Host: " + "www.fortify.net" + CRLF + CRLF )
? "SSL_GET_ERROR", SSL_get_error( ssl, tmp )
buffer := Space( 1024 )
? "SSL_READ", tmp := SSL_read( ssl, @buffer )
? "SSL_GET_ERROR", SSL_get_error( ssl, tmp )
? buffer

? hb_inetClose( socket )

RETURN




Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1563
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 10.10.19 09:38. Заголовок: Dima пишет: с языка..


Dima пишет:

 цитата:
с языка снял


Ну, прости))
MIKHAIL пишет:

 цитата:
Спасибо


Не за что)

Спасибо: 1 
ПрофильЦитата Ответить





Пост N: 235
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 10.10.19 09:54. Заголовок: А доку под данным фу..


А доку под данным функциям реально найти ? У Кресина упоминается fd := hb_inetFD( hSocket, [l] ) , но без описания...

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7109
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.10.19 13:01. Заголовок: MIKHAIL пишет: Кре..


MIKHAIL пишет:

 цитата:
Кресина упоминается fd := hb_inetFD( hSocket, [l] ) , но без описания...


тут например

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 236
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 10.10.19 17:48. Заголовок: Dima там тоже не гус..


Dima там тоже не густо, хотелось бы понимать сущность функции.

PS Раньше была хорошая дока на http://www.creasolgroup.com/ потом видимо контора закрылась, очень жалею что не скачал сайт...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1564
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 10.10.19 17:53. Заголовок: MIKHAIL пишет: PS Р..


MIKHAIL пишет:

 цитата:
PS Раньше была хорошая дока на http://www.creasolgroup.com/ потом видимо контора закрылась, очень жалею что не скачал сайт...


В такой ситуации могут помочь (к примеру):
http://web.archive.org/
http://web-arhive.ru/

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7110
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.10.19 22:19. Заголовок: MIKHAIL пишет: Dima..


MIKHAIL пишет:

 цитата:
Dima там тоже не густо, хотелось бы понимать сущность функции.


Попробуй посмотреть сырец (я в си не очень) ....src\rtl\hbinet.c
Функции HB_INETFD и HB_INETSTATUS
К HB_INETSTATUS описание есть и есть некоторое сходство в этих функциях ,
возможно наведет на какие то мысли...

PS
Завтра попробую узнать у человека который шарит в Си , правда от Harbour он далек ,
может чего и подскажет.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1581
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 10.10.19 22:59. Заголовок: MIKHAIL пишет: хот..


MIKHAIL пишет:

 цитата:
хотелось бы понимать сущность функции



Посмотрев исходники, вы найдете, что функция возвращает socket->sd.
sd - это socket descriptor.

Подробнее найдете здесь
https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.1.0/com.ibm.zos.v2r1.cbcpx01/ovsock.htm

или что-то другое сможете нагуглить ;)

P.S. FD - это file descriptor

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 237
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 11.10.19 09:22. Заголовок: ­Dima пишет: Завтра ..


*PRIVAT*

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 47 , стр: 1 2 3 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 689
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет