Как получить все ссылки из Текстового файла?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
xenomorph
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 508
Зарегистрирован: 18.04.2004 (Вс) 11:41
Откуда: это не важно - на сегодня у меня есть алиби ...

Как получить все ссылки из Текстового файла?

Сообщение xenomorph » 02.04.2008 (Ср) 21:08

Привет всем!

Давненько я не захаживал... :-).

Вопрос:

Помогите зимбабвийскому аборингену (мну) с парсингом тхт.

Проблема:

1. Есть файл - интернет страница сохранённая на диск.
2. В ней - миллиард ссылок (и больше).
3. Нужен алгоритм парсинга на наличие "http://.../".
4. Алго должен быть ОЧЕНЬ эффективеным и оптимизированым.

Я это и сам напишу за неделю :-(.
Просьба за лень не пинать.

Меня интересует есть ли у кого ГОТОВЫЙ кусок кода.
За это скажу спасибо.

Я не от лени спрашиваю - так как если этот код писать самому прийдёться делать до 10 заходов но оптимизацию\тестирование.
Как минимум определить практически какой из алго работать будет лучше и быстрее ("окно", "регекспы" и т.п.). А задача-то стандартная.

Вот и спрашиваю может у кого-нить чёто завалялось.

Огромное спасибо заранее!
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 03.04.2008 (Чт) 8:52

Лучший способ понять что-то самому — объяснить это другому.

xenomorph
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 508
Зарегистрирован: 18.04.2004 (Вс) 11:41
Откуда: это не важно - на сегодня у меня есть алиби ...

Спасибо!

Сообщение xenomorph » 03.04.2008 (Чт) 12:22

Попробую разабраться!

Смахивает на самое "ОНО". :-)

Ищё раз Пасиб!
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 03.04.2008 (Чт) 12:48

Код: Выделить всё
codeline = "0123456789ab...z@/#?&" ' короче все что возможно в ссылке
TEXT = LCASE(TEXT)
TMP = Split(TEXT, "http://")
For i = 0 to ubound(TMP)
   j = 0
   while instr(1,codeline, mid$(tmp(i),j+1,1))<>0 and (j<len(tmp(i)))
     j = j +  1
   wend
   link = left$(tmp(i),j)
Next i
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

xenomorph
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 508
Зарегистрирован: 18.04.2004 (Вс) 11:41
Откуда: это не важно - на сегодня у меня есть алиби ...

Сообщение xenomorph » 03.04.2008 (Чт) 13:18

2 SSecurity: Пасиб!
Я тут уже пошкодил:

Код: Выделить всё
Private Sub cmdCheck_Click()
    'LVars:
    Dim obj_Match As Match
    Dim obj_RegExpression As New RegExp
    Dim s_Data As String
    Dim i As Long
    s_Data = FTS("1.html", True)
    'Code:
    obj_RegExpression.IgnoreCase = True
    obj_RegExpression.Global = True
    obj_RegExpression.Pattern = "http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?"
    For Each obj_Match In obj_RegExpression.Execute(s_Data)
        Debug.Print obj_Match.Value
    Next
    txtMatchesFound = "MatchesFound: " & i
End Sub


Щаз буду выяснять чей код быстрее :-).
Заюзаю Ваш код если будет быстрее.

2Antonariy:

Посмотрел - класс! Но мне оно подходит на половину. Мне так же надо отлавливать ссылки которые линками не являються. То есть не только ХТМЛ. Всё равно спасибо!
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 03.04.2008 (Чт) 13:25

SSecurity, а ты вопрос читал?
Что будет со Split, если ему гигабайт подсунуть?
Lasciate ogni speranza, voi ch'entrate.

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 03.04.2008 (Чт) 13:31

2 alibek Будет весело ... :)
А вообще все зависит от того как он этот гигабайт считывать будет ...
если сразу запихнет в переменную - то конечно долго а если будет читать блоком например по 50000 байт + до след пробела ... то уже намного быстрее.
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 83

    TopList