powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Простой парсинг ссылок
15 сообщений из 15, страница 1 из 1
Простой парсинг ссылок
    #39234278
Scorp1978
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте подскажите почему вот этот код
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
clear
  o=CREATEOBJECT("InternetExplorer.Application")    
    o.Navigate2("www.10ruslake.ru")    
    DO WHILE o.ReadyState # 4    
    	DOEVENTS FORCE     
    Enddo    
    STRTOFILE(o.Document.body.InnerHTML,"c:\data\tcs.htm",0)

  loTables=o.document.getElementsByTagName('table')  
  for each loTable in loTables  
  	for each loRow in loTable.rows  
  		for each loCell in loRow.cells  
  			?loCell.innertext 
  			Childs(loCell) 
  		endfor  
  	endfor  
  endfor
  
  *******************************************************
   function Childs(loChilds)  
  	local loChild  
  	if loChilds.childNodes.length>0  
  		for each loChild in loChilds.childNodes  
  			do case  
  			case loChild.nodeName=='A'  
  				??'<ссылка->'+loChild.href+'<-ссылка>'  
  			endcase  
  			Childs(loChild)  
  		endfor  
  	endif  
  endfunc



не работает, а например с сайтом drom.ru работает я так подозреваю что из-за таблиц, как сделать его универсальным
чтоб работал на всех сайтах?
заранее благодарен
...
Рейтинг: 0 / 0
Простой парсинг ссылок
    #39234335
Фотография бухалтер фантоцци
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Scorp1978
Код: sql
1.
STRTOFILE(o.Document.body.InnerHTML,"c:\data\tcs.htm",0)

По правильному по-идее должно быть так: o.document.body.innerHTML
DOM чувствителдьна к регистру, хотя кто занет, может InternetExplorer.Application позволяет так...

Scorp1978как сделать его универсальным чтоб работал на всех сайтах?А что именно нужно делать-то?
Если только ссылки собрать, то можно сразу выборку делать o.document.getElementsByTagName('a')
без всяких таблиц...
...
Рейтинг: 0 / 0
Простой парсинг ссылок
    #39234805
Scorp1978
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно если несложно полный код, как в массив или просто на экран все ссылки вывести, дальше сам
...
Рейтинг: 0 / 0
Простой парсинг ссылок
    #39234812
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Scorp1978как в массив <...> все ссылки вывести
Код: sql
1.
loLinks=o.document.getElementsByTagName('A')
...
Рейтинг: 0 / 0
Простой парсинг ссылок
    #39234820
Scorp1978
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
clear
    o=CREATEOBJECT("InternetExplorer.Application")    
    o.Navigate2("www.10ruslake.ru")    
    DO WHILE o.ReadyState # 4    
    	DOEVENTS FORCE     
    Enddo    
    STRTOFILE(o.Document.body.InnerHTML,"c:\data\tcs.htm",0)
    loLinks=o.document.getElementsByTagName('A')

susp



не получается loLinks не видит как массив
...
Рейтинг: 0 / 0
Простой парсинг ссылок
    #39234824
Scorp1978
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот нашел работает но выводит текст ссылки но не саму ссылку
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
  o=CREATEOBJECT("InternetExplorer.Application")    
  o.Navigate2("www.10ruslake.ru")    
  DO WHILE o.ReadyState # 4    
   	DOEVENTS FORCE     
  Enddo    
  With o.document  
  	Local ancors  
  	ancors = .all.tags('A')  
  	For i=0 to ancors.length-1  
  		?ancors.item(i).innerHtml  
  	EndFor  
  EndWith



возможно переделать чтоб выводил ссылку?
...
Рейтинг: 0 / 0
Простой парсинг ссылок
    #39234842
Scorp1978
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все вопрос решен

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
  o=CREATEOBJECT("InternetExplorer.Application")    
  o.Navigate2("www.drom.ru")    
  DO WHILE o.ReadyState # 4    
   	DOEVENTS FORCE     
  Enddo    
  With o.document  
  	Local ancors  
  	ancors = .all.tags('A')
  	*?ancors.item(1)
  	For i=0 to ancors.length-1  
  		?ancors.item(i).href
  	EndFor  
  EndWith
...
Рейтинг: 0 / 0
Простой парсинг ссылок
    #39234910
Scorp1978
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще вопросик есть к примеру ссылка
Код: plsql
1.
https://promo.avito.ru/?utm_campaign=(display_Avito_Promo)%5Bbe%5D%3A%20Russia&utm_term=&utm_source=GAdwords&utm_medium=cpc&gclid=CLfHs-S-1swCFcH3cgodDkUBzA


как из нее вытащить правильный адрес сайта, не пользуясь средствами строковыми фокса
...
Рейтинг: 0 / 0
Простой парсинг ссылок
    #39234911
Scorp1978
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Scorp1978Еще вопросик есть к примеру ссылка
Код: plsql
1.
https://promo.avito.ru/?utm_campaign=(display_Avito_Promo)%5Bbe%5D%3A%20Russia&utm_term=&utm_source=GAdwords&utm_medium=cpc&gclid=CLfHs-S-1swCFcH3cgodDkUBzA


как из нее вытащить правильный адрес сайта, не пользуясь средствами строковыми фокса

результат должен быть

Код: plsql
1.
https://promo.avito.ru
...
Рейтинг: 0 / 0
Простой парсинг ссылок
    #39234913
Scorp1978
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Scorp1978Scorp1978Еще вопросик есть к примеру ссылка
Код: plsql
1.
https://promo.avito.ru/?utm_campaign=(display_Avito_Promo)%5Bbe%5D%3A%20Russia&utm_term=&utm_source=GAdwords&utm_medium=cpc&gclid=CLfHs-S-1swCFcH3cgodDkUBzA


как из нее вытащить правильный адрес сайта, не пользуясь средствами строковыми фокса

результат должен быть

Код: plsql
1.
https://avito.ru
...
Рейтинг: 0 / 0
Простой парсинг ссылок
    #39235769
Фотография бухалтер фантоцци
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Scorp1978Еще вопросик есть к примеру ссылка
Код: plsql
1.
https://promo.avito.ru/?utm_campaign=(display_Avito_Promo)%5Bbe%5D%3A%20Russia&utm_term=&utm_source=GAdwords&utm_medium=cpc&gclid=CLfHs-S-1swCFcH3cgodDkUBzA


как из нее вытащить правильный адрес сайта, не пользуясь средствами строковыми фокса
Это уже открытая страница в InternetExplorer.Application ?
Тогда
Код: sql
1.
o.window.location.hostname

http://javascript.ru/window-location
...
Рейтинг: 0 / 0
Простой парсинг ссылок
    #39235807
Scorp1978
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
  o=CREATEOBJECT("InternetExplorer.Application")    
  o.Navigate2("www.drom.ru")    
  DO WHILE o.ReadyState # 4    
   	DOEVENTS FORCE     
  Enddo    
  With o.document  
  	Local ancors  
  	ancors = .all.tags('A')
  	*?ancors.item(1)
  	For i=0 to ancors.length-1  
  		?ancors.item(i).href
  	EndFor  
  EndWith



ребят все работает но так медленно пипец в чем дело может быть в версии эсплоэра, или код?
...
Рейтинг: 0 / 0
Простой парсинг ссылок
    #39235813
Фотография бухалтер фантоцци
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Scorp1978ребят все работает но так медленно пипец в чем дело может быть в версии эсплоэра, или код?
Попробуйте ancors.length убрать из заголовка цикла, заменив на переменную, а ещё лучше цикл сделать не по возрастанию, а по убыванию.
Возможно дело не в этом (я ни разу не работал с InternetExplorer.Application), но есть кое-какое предположение...
Дело в том, что коллекции объектов могут динамично менять свой размер (длина коллекции непостоянна),
что может повлечь новые вычисления текущей длины коллекции при каждой итерации,
но это только предположение...
...
Рейтинг: 0 / 0
Простой парсинг ссылок
    #39235822
Scorp1978
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо вопрос решил путем скачивания страницы на диск потом его парсинг, но возникла другая проблема
при парсинге ie жалуется на безопасность страницы типа в странице есть изъян и это не безопасно вот код можете запустить
увидите сами, как сделать чтоб все проходило без вопросов
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
ht_="http://chinaprices.ru"
=urltxt(ht_,'test.txt')
oo = CREATEOBJECT('htmlfile')  
oo.write(FILETOSTR('test.txt'))  
oDoc = oo.body.document  
With oDoc
 Local ancors 
 ancors = .all.tags('A')
 For i=0 to ancors.length-1 
  if !empty(ancors.item(i).href) and at(ht_,ancors.item(i).href)>0
   ?ancors.item(i).href
  endif
 EndFor 
EndWith

funct urltxt
lpara tcUrl, tcFile
Declare Integer URLDownloadToFile In urlmon.Dll;
    INTEGER pCaller, String szURL, String szFileName,;
    INTEGER dwReserved, Integer lpfnCB
    SET DEFAULT TO 'c:\'
lnRes = URLDownloadToFile(0, tcUrl, tcFile, 0, 0)
    SET DEFAULT TO 'c:\'
if lnRes = 0
	lcRet = 'Ok'
else
	lcRet = 'Error: ' + str(lnRes)
endif
?lcRet
return lcRet
...
Рейтинг: 0 / 0
Простой парсинг ссылок
    #39235845
Фотография бухалтер фантоцци
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Scorp1978,

так нельзя вести диалог, без обратной связи...
от Вас каждый раз новые задачи,
последнее - это стандартная политика безопасности браузера IE, которая работает на локальных файлах - требуется подтвердить исполнение JavaScript
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Простой парсинг ссылок
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]