Нужна помощь

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by aydar, 27 May 2010.

  1. aydar

    aydar Member

    Joined:
    12 Nov 2009
    Messages:
    259
    Likes Received:
    6
    Reputations:
    -2
    Рябят уже часа 3 наверное мучаюсь не могу спарсить логины с форумов ucoz, вот примеры:

    Не могу найти общии закономерности для парсинга в принципе конец ника это </a>, а вот откуда начинать парсить ник хз.
     
    #1 aydar, 27 May 2010
    Last edited: 27 May 2010
  2. HakaR

    HakaR Active Member

    Joined:
    23 Jul 2009
    Messages:
    301
    Likes Received:
    200
    Reputations:
    3
    ">username</a> не?
     
  3. aydar

    aydar Member

    Joined:
    12 Nov 2009
    Messages:
    259
    Likes Received:
    6
    Reputations:
    -2
    т.к. искать начало? "> не пойдет, может я вас не понял дайте код, плиз
     
  4. RedFern.89

    RedFern.89 Member

    Joined:
    20 Jan 2010
    Messages:
    575
    Likes Received:
    48
    Reputations:
    0
    ищи по 2м критериям

    Code:
    for I := 0 To Page.count -1 do 
    begin
    
     If (Pos('">', page[i]) <> 0) and (Pos('</a>', page[i]) <> 0) Then
     begin
    
     end;
    
    end;
    
     
  5. Meecript_

    Meecript_ Banned

    Joined:
    29 Oct 2008
    Messages:
    194
    Likes Received:
    62
    Reputations:
    32
    PHP:
    while(sPage.Pos("<a href"))
    {
       
    sPage.Delete(1sPage.Pos("<a href"));
       
    sPage.Delete(1sPage.Pos(">"));
       
    sUser sPage;
       
    sUser.SetLength(sUser.Pos("<") - 1);
       
    UserList->Add(sUser);
    }
     
  6. aydar

    aydar Member

    Joined:
    12 Nov 2009
    Messages:
    259
    Likes Received:
    6
    Reputations:
    -2
    Вот еще недавно ковырялся и что надыбал

    При авторизации на всех форумах есть, 1 закономерность Отправить Личное Сообщение, можно как то парсить справа налево, т.е. с "Отправить Личное Сообщение" по "">", если да то как, можете кодом помочь.
     
  7. aydar

    aydar Member

    Joined:
    12 Nov 2009
    Messages:
    259
    Likes Received:
    6
    Reputations:
    -2
    Ребят, есть у кого мысли какие?
     
  8. POS_troi

    POS_troi Elder - Старейшина

    Joined:
    1 Dec 2006
    Messages:
    1,569
    Likes Received:
    466
    Reputations:
    108
    Если топорно то Boost Regex или если C# то там есть стандартные средства регулярок.

    А вообще для чего под такую задачу писать прогу на Высоких языках? Заюзай скрипт на ПхП или Перловке =/
     
  9. aydar

    aydar Member

    Joined:
    12 Nov 2009
    Messages:
    259
    Likes Received:
    6
    Reputations:
    -2
    пишу на делфи, это часть проги, парсер логинов нужен, уже 3 день пытаюсь, есть только одна законномерность с Отправить Личное Сообщение по "> т.е. справа налево но как это в коде делать?
     
    #9 aydar, 29 May 2010
    Last edited: 29 May 2010
  10. TRX.new

    TRX.new Member

    Joined:
    27 Apr 2009
    Messages:
    151
    Likes Received:
    21
    Reputations:
    0
    Тебе ж сказали, читай о регулярных выражениях!
     
  11. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    Лично мой вариант на Delphi, который успешно получает список пользователей из текстов вида, который ты скинул выше (нету никаких гарантий, что он работает везде):

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

     
    1 person likes this.
  12. Meecript_

    Meecript_ Banned

    Joined:
    29 Oct 2008
    Messages:
    194
    Likes Received:
    62
    Reputations:
    32
    Что-то неправильно - https://forum.antichat.ru/showpost.php?p=2169660&postcount=5 ?
    Или с билдера на делфи переписать сложно?
     
    2 people like this.
  13. aydar

    aydar Member

    Joined:
    12 Nov 2009
    Messages:
    259
    Likes Received:
    6
    Reputations:
    -2
    Да, вот в таких случаях не работает

     
  14. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    Кстати, M_script_ написал очень хороший и правильный вариант, который работает абсолютно во всех вариантах, написанных выше.

    Вот его чуток измененный код, переведенный на Delphi.

    Code:
    var
      p: integer;
      Data: AnsiString;
      Username: String;
    begin
      Data := Memo1.Text;
    
      while pos('<a href', Data) <> 0 do
      begin
        Delete(Data, 1, Pos('<a href', Data));
        Delete(Data, 1, Pos('>', Data));
        Username := copy(Data, 1, Pos('<', Data) - 1);
        if Username <> '' then Memo2.Lines.Add(Username);
      end;