Парсинг друзей ВК нв Delphi

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Artist, 13 Jul 2010.

  1. Artist

    Artist Member

    Joined:
    10 Jul 2010
    Messages:
    89
    Likes Received:
    5
    Reputations:
    0
    Парсинг друзей ВК (Delphi)

    Написал парсер друзей но он парсит только первую страницу.
    Code:
    b.Text:=IdHTTP1.Get('http://vkontakte.ru/friends.php') ;
    y:=b.Text;
    repeat
    o:=pos('</dt><dd><a href=',y)+19;
    p:=(copy(y,o,50));
    c:=pos('>',p)-1;
    Delete(p,c,50);
    m:=pos('id',p);
    Delete(p,m,2);
    Memo1.Lines.Add(p) ;
    y:=copy(y,o,length(y)-o);
    until  (pos('</dt><dd><a href=',y)=0);
    Как перейти на следующую страницу?
    В адресной строке браузера при переключении страниц не чего не меняется.В снифере тоже.
    +Доп вопрос: Выполняю парсинг id друзей, после окнчания жму другую кнопку и она должна отправлять сообщения по готовым id друзей, но выдает ошыбку!.Если все это сделать на одну кнопку то программа будет работать нормально.В чем проблемма?
     
    #1 Artist, 13 Jul 2010
    Last edited: 13 Jul 2010
  2. M_script

    M_script Members of Antichat

    Joined:
    4 Nov 2004
    Messages:
    2,582
    Likes Received:
    1,310
    Reputations:
    1,557
    В адресной строке не меняется потому что аякс. Если снифер ничего не показывает - используй другой.
    удобнее парсить друзей с http://vkontakte.ru/friends_ajax.php
     
    sanya111 likes this.
  3. Artist

    Artist Member

    Joined:
    10 Jul 2010
    Messages:
    89
    Likes Received:
    5
    Reputations:
    0
    На этой странице 'http://vkontakte.ru/friends_ajax.php' должны отображатся все id Друзей или тоже надо переключатся по страницам.?
    +Доп вопрос: Выполняю парсинг id друзей, после окончания жму другую кнопку и она должна отправлять сообщения по готовым id друзей, но выдает ошибку!.Если все это сделать на одну кнопку то программа будет работать нормально.В чем проблема?
     
    #3 Artist, 13 Jul 2010
    Last edited: 13 Jul 2010
  4. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    Ну возьми да проверь, зачем глупые вопросы задавать? Показываются все друзья там.

    Экстрасенсов нет, код в студию ;)
     
  5. Artist

    Artist Member

    Joined:
    10 Jul 2010
    Messages:
    89
    Likes Received:
    5
    Reputations:
    0
    Вот кода он парсит со страницы 'http://vkontakte.ru/friends_ajax.php' id друзей.
    var
    Code:
    a,b: TStringList;
    s,y,p,hash: string;
    o,c,m,n,g,h,ui,io: integer;
    Decchas,sid : string;
    str,chas : string;
    I : Integer;
    Len : integer;
    begin
    b:=TStringList.Create;
    a:=TStringList.Create;
    b.Text:=IdHTTP1.Post('http://vkontakte.ru/login.php',a);
    if pos('captcha_sid',b.Text)<>0 then
    begin
    ShowMessage('E^a`i"?a`');
    end
    else
    b.Clear;
    a.Clear;
    a.Add('act=login');
    a.Add('email='+Edit1.Text);
    a.Add('pass='+Edit2.Text);
    b.Text:=IdHTTP1.Post('http://login.vk.com/',a);
    s:=copy(b.Text,285,56);
    a.Clear;
    b.Clear;
    a.Add('s='+s);
    a.Add('op=slogin');
    b.Text:=IdHTTP1.Post('http://vkontakte.ru/login.php',a);
    a.Clear;
    b.Clear;
    IdHTTP1.Request.CustmHeaders.Add('Cookie: remixsid='+s);
    b.Text:=IdHTTP1.Get('http://vkontakte.ru/profile.php');
    a.Clear;
    b.Clear;
    b.Text:=IdHTTP1.Post('http://vkontakte.ru/friends_ajax.php',a) ;
    Memo2.Text:=b.Text;
    y:=b.Text;
    repeat
    Delete(y,1,50);
    o:=pos('[',y)+1;
    ui:=pos(';"',y);
    io:=ui-o;
    p:=(copy(y,o,io));
    Memo1.Lines.Add(p) ;
    y:=copy(y,o,length(y)-o);
    until  (pos('[',y)=0);
    end;
    Теперь если не выходить из программы и ввести новый аккаунт и снова парсить то выдает ошибку 302.
    И еще на анкете в браузере 1 297 друзей, а парсит 1282 друга.
     
    #5 Artist, 13 Jul 2010
    Last edited: 14 Jul 2010
  6. Artist

    Artist Member

    Joined:
    10 Jul 2010
    Messages:
    89
    Likes Received:
    5
    Reputations:
    0
    Все решил сам проблему...Тему можно закрывать
     
    #6 Artist, 13 Jul 2010
    Last edited: 14 Jul 2010
  7. dreamcation

    dreamcation New Member

    Joined:
    2 Apr 2010
    Messages:
    75
    Likes Received:
    0
    Reputations:
    0
    очень удобный вид. можно ли в подобном виде получить список композиций с ссылками для скачивания по соответствующему запросу?
     
  8. RedFern.89

    RedFern.89 Member

    Joined:
    20 Jan 2010
    Messages:
    557
    Likes Received:
    45
    Reputations:
    0
    а регэкспу заюзать?нет?
     
  9. dreamcation

    dreamcation New Member

    Joined:
    2 Apr 2010
    Messages:
    75
    Likes Received:
    0
    Reputations:
    0
    если просто загружать страницу для последующего парсинга получается очень не выгодно по трафику, т.к. она весит ~300 кб, а полезной информации, т.е. названия композиций, ссылки на них весят считанные килобайты...
     
  10. Партнёр

    Joined:
    7 Sep 2010
    Messages:
    224
    Likes Received:
    67
    Reputations:
    1
    можно подобным образом получить список друзей чужого ID?