|
Как быстро получить код HTML по URL сайта?
|
|||
---|---|---|---|
#18+
Хочу поделиться двумя простыми способами. Может у кого то есть более быстрый и надёжный способ. Задача получить код HTML страницы сайта по URL сайта. Первое решение: *Процедура получения кода HTML страницы сайта. *Пример вызова UrlToHtml('http://website.com/') *(c) Eugen Kru PARAMETERS m.url PRIVATE ALL oIE=CREATEOBJECT("InternetExplorer.Application") oIE.Navigate(m.url) DO WHILE .T. IF TYPE('oIE.Document')#'U' AND oIE.Document.ReadyState="complete" EXIT ENDIF ENDDO m.html=oIE.document.documentElement.innerHTML IF "HTTP 404"$m.html RETURN .NULL. ENDIF oIE.Quit RELEASE oIE RETURN m.html Второе решение взято из интернет с сайта http://fox.wikis.com/wc.dll?Wiki~ReadUrl~VFP . Оно по-сложнее, но в нём можно считывать так же файлы картинок JPEG,PNG и т.д. прямо с сайта и сохранять их в переменную и на диске для последующей обрабаботки. http://fox.wikis.com/wc.dll?Wiki~ReadUrl~VFP - Там же есть и другие решения, такие как например скачивания файла из интернет. Как прочитать веб страницу: * readurl.prg 06-Mar-98 * 06-Mar-98 pulled from Q174524 on March 98 Technet CD * 06-Mar-98 bug fixed about the length of the sReadBuffer *Any Internet or intranet URL can be passed as a parameter. Microsoft.com *was chosen for this example. *Note that Microsoft Internet Explorer must be installed on the computer. * passed: URLName, in the form "http://www.microsoft.com" * * returns: the content of the URL * * usage: * * uWebContent = ReadURL( "http://www.microsoft.com" ) * uWebContent = ReadURL( "http://www.SomeSite.com/SomeJPG.jpg" ) * This next one provides feedback on the download every 4092 bytes: * uWebContent = ReadURL( "http://www.SomeSite.com/SomeBigFile.exe", * "GiveFeedback(lcBytesRead,llOK)", 4092 ) * * notes: * 1 - IE does not need to be running to use this, but must be installed LPARAMETERS pcUrlName, pcOptFeedback, pnOptBuffSize, pcOptOutputFile * These parameters are No good, pcOptOutputBuffer, pcOptOutputWhole * because once they're passed as parameters, the original names get hidden, so the * feedback function can't reference them that way, anyway. *May 27, 03: Loader v1.01: Added parameter "pcOptOutputFile" to be able to download * files bigger than 16MB DECLARE INTEGER InternetOpen IN wininet.DLL STRING sAgent, ; INTEGER lAccessType, STRING sProxyName, ; STRING sProxyBypass, INTEGER lFlags DECLARE INTEGER InternetOpenUrl IN wininet.DLL ; INTEGER hInternetSession, STRING sUrl, STRING sHeaders, ; INTEGER lHeadersLength, INTEGER lFlags, INTEGER lContext DECLARE INTEGER InternetReadFile IN wininet.DLL INTEGER hfile, ; STRING @sBuffer, INTEGER lNumberofBytesToRead, INTEGER @lBytesRead DECLARE short InternetCloseHandle IN wininet.DLL INTEGER hInst #DEFINE INTERNET_OPEN_TYPE_PRECONFIG 0 #DEFINE INTERNET_OPEN_TYPE_DIRECT 1 #DEFINE INTERNET_OPEN_TYPE_PROXY 3 #DEFINE SYNCHRONOUS 0 #DEFINE INTERNET_FLAG_RELOAD 2147483648 LOCAL lcAgent, lhInternetSession, lhUrlFile, llOk, lnOk, lcRetVal, lcReadBuffer, lnBytesRead, laDr[1], llCancel if vartype(pcOptFeedback)='C' * if we're given a feedback function, make sure it has both parentheses (looks like a function) if not ( at('(',pcOptFeedback)>0 and (at('(',pcOptFeedback) < at(')',pcOptFeedback) ) ) pcOptFeedback = .f. endif endif * what application is using Internet services? lcAgent = "VFP" lhInternetSession = InternetOpen( lcAgent, INTERNET_OPEN_TYPE_PRECONFIG, '', '', SYNCHRONOUS ) IF lhInternetSession = 0 WAIT WINDOW "Internet session cannot be established" TIME 2 RETURN .null. ENDIF lhUrlFile = InternetOpenUrl( lhInternetSession, pcUrlName, '', 0, INTERNET_FLAG_RELOAD, 0 ) IF lhUrlFile = 0 * URL cannot be opened RETURN .null. ENDIF lcRetVal = "" llOk = .t. llCancel = .F. lnTotalBytesRead = 0 lnBytesRead = 0 lcReadBuffer = '' if VarType(pcOptFeedback)='C' && Call the feedback at the zero mark =&pcOptFeedback endif * Clear output file, if it exists. if type('pcOptOutputFile')='C' and ADIR(laDr,pcOptOutputFile)>0 DELETE FILE (pcOptOutputFile) endif DO WHILE llOK and NOT llCancel * set aside a big buffer lcReadBuffer = SPACE(iif(VarType(pnOptBuffSize)='N',pnOptBuffSize,32767)) lnBytesRead = 0 lnOK = InternetReadFile( lhUrlFile, @lcReadBuffer, LEN(lcReadBuffer), @lnBytesRead) lnTotalBytesRead = lnTotalBytesRead + lnBytesRead if ( lnBytesRead > 0 ) if type('pcOptOutputFile')='C' StrToFile(left(lcReadBuffer,lnBytesRead),pcOptOutputFile,.T.) && Add to file. else lcRetVal = lcRetVal + left( lcReadBuffer, lnBytesRead ) endif endif *!* if vartype(pcOptOutputBuffer)='C' *!* pcOptOutputBuffer = left( lcReadBuffer, lnBytesRead ) *!* endif *!* if vartype(pcOptOutputWhole)='C' *!* pcOptOutputWhole = lcRetVal *!* endif * error trap - either a read failure or read past eof() llOk = ( lnOK = 1 ) and ( lnBytesRead > 0 ) if vartype(pcOptFeedback)='C' if not &pcOptFeedback llCancel = .T. endif endif ENDDO * close all the handles we opened InternetCloseHandle( lhUrlFile ) InternetCloseHandle( lhInternetSession ) * IF saving to file, return Success status. if type('pcOptOutputFile')='C' RETURN NOT llCancel endif * return the URL contents RETURN lcRetVal Ещё есть ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2009, 01:45 |
|
Как быстро получить код HTML по URL сайта?
|
|||
---|---|---|---|
#18+
А у меня возникла такая проблема: Есть игрушка он-лайновая, я хотел бы написать для неё автобот на ВФП 9. Идея бред. Но я за такие только и берусь. Я же Вам рассказывал как делал графику на ВФП (математики не хватило, чтобы закончить). Но суть вопроса в том - как можно не только получать html код страницы, но и упралять элементами? Наковырял два объекта (не могу вспомнить как они называются), 1 умеет просто открывать документы (св-во NavigateUrl), а вот второй посерьезнее - умеет открывать hrml в виде редактора (т.е. видны формы, элементы и т.д.). Может кто подскажет кк управиться с этими зверями? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2009, 16:37 |
|
Как быстро получить код HTML по URL сайта?
|
|||
---|---|---|---|
#18+
Вопрос еще открыт. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2009, 14:39 |
|
Как быстро получить код HTML по URL сайта?
|
|||
---|---|---|---|
#18+
Ну сходи сюда: http://news2news.com/vfp/index.php ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2009, 02:14 |
|
Как быстро получить код HTML по URL сайта?
|
|||
---|---|---|---|
#18+
malnevitНу сходи сюда: http://news2news.com/vfp/index.php Спасибо, друг. Все внимательно изучил. Есть маленькие вопросы по константам, но установка С++ решит проблемы. Однако я чувствую, что этого недостаточно. На сайте онлайн игрушки все реализовано куками, а функциями описанными в той статье не решить этот вопрос (мне так кажеться). ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2009, 12:09 |
|
Как быстро получить код HTML по URL сайта?
|
|||
---|---|---|---|
#18+
Telum, Остановился я на объекте InternetExplore Web Browser, решил кучу вопросов попутно (отключение JIT Debugger), остановился на такой проблеме: как отключить загрузку изображений? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2009, 11:54 |
|
Как быстро получить код HTML по URL сайта?
|
|||
---|---|---|---|
#18+
> Автор: Telum > Остановился я на объекте InternetExplore Web Browser, остановился на такой проблеме: как отключить загрузку > изображений? За это отвечает какой-то ключ в реестре и этот ключ распространяется и на полноценный ИЕ. Поищи или RegMon'ом посмотри какой ключ меняется если в настройках ИЕ сменить этот параметр. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2009, 12:18 |
|
Как быстро получить код HTML по URL сайта?
|
|||
---|---|---|---|
#18+
Игорь Горбонос > Автор: Telum > Остановился я на объекте InternetExplore Web Browser, остановился на такой проблеме: как отключить загрузку > изображений? За это отвечает какой-то ключ в реестре и этот ключ распространяется и на полноценный ИЕ. Поищи или RegMon'ом посмотри какой ключ меняется если в настройках ИЕ сменить этот параметр. Спасибо. Оказывается все вообще просто: отключаем загрузку рисунков в ИЕ ... и все. Ну а если нужно будет включить, то просто включаем в браузере. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2009, 13:28 |
|
Как быстро получить код HTML по URL сайта?
|
|||
---|---|---|---|
#18+
> Автор: Telum > Спасибо. Оказывается все вообще просто: отключаем загрузку рисунков в ИЕ ... и все. Ну а если нужно будет > включить, то просто включаем в браузере. Так точно, только за такое своеволие мне нафиг не нужна такая программа, потому, что картинок с порносайтов не видно будет Если нужен только текст, то можно использовать для загрузки MSXML2.XMLHTTP после получения текста страницы пройтись и вырезать все ссылки на рисунки, а после этого загружать в web-browser Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2009, 14:25 |
|
Как быстро получить код HTML по URL сайта?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2009, 14:26 |
|
Как быстро получить код HTML по URL сайта?
|
|||
---|---|---|---|
#18+
Игорь Горбонос, ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2009, 16:07 |
|
Как быстро получить код HTML по URL сайта?
|
|||
---|---|---|---|
#18+
спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2009, 16:07 |
|
Как быстро получить код HTML по URL сайта?
|
|||
---|---|---|---|
#18+
Telum, ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2009, 11:27 |
|
Как быстро получить код HTML по URL сайта?
|
|||
---|---|---|---|
#18+
А каким образом можно отправлять данные методом post? Хотелось бы увидеть рабочий пример. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2009, 11:39 |
|
|
start [/forum/topic.php?fid=41&msg=36367195&tid=1585764]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
others: | 337ms |
total: | 477ms |
0 / 0 |