Спарсить поиск вк C#

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by kokoulin, 16 Sep 2011.

  1. kokoulin

    kokoulin Member

    Joined:
    8 Jan 2011
    Messages:
    63
    Likes Received:
    5
    Reputations:
    5
    Помогите пожалуйста, как спарсить поиск вк, ведь он в исходнике отдает только первые 10 пунктов, а дальше подгружает jsом,. скажите хотябы в какую сторону рыть
     
  2. realcoder

    realcoder Member

    Joined:
    9 Dec 2010
    Messages:
    226
    Likes Received:
    11
    Reputations:
    4
    но он же не сразу все скачивает. он сначала получает первые 10,а потом когда ты крутишь мышью он отправляет запрос к нужному скрипту и получает ответ в json а дальше жабаскрипт все это красиво отображает. так что тебе остается отловить http-analizer'ом куда идет запрос и самому послать запрос к этому скрипту чтоб получить результат в json. тем более что json намного удобней парсить чем просто отображенные на html-странице данные...
     
    2 people like this.
  3. kokoulin

    kokoulin Member

    Joined:
    8 Jan 2011
    Messages:
    63
    Likes Received:
    5
    Reputations:
    5
    Спасибо большое, так не хотелось марочится с джсоном(
    но видимо прийдется)
     
  4. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    забей на json, все простыми регулярками парсится за 1 проход.
     
  5. kokoulin

    kokoulin Member

    Joined:
    8 Jan 2011
    Messages:
    63
    Likes Received:
    5
    Reputations:
    5
    Простым запросом и регулярками парсится парсится только первые 10 результатов остарые приходят в jsonе его тоже можно регулярками парсить
     
  6. enigma

    enigma Member

    Joined:
    10 Jul 2011
    Messages:
    80
    Likes Received:
    15
    Reputations:
    7
    будет выдано (при первом запросе) число найденных объектов. (людей, групп и тд)
    Парсь сначала его. Потом это значение преобразуй в int (не знаю как в си шарп, скорее всего - не сложно) и дели его 10.
    И потом едь циклом,(фором или while сам смотри, пока не будет достигнуто (сколько нашли / 10) ) в каждом запросе линк меняй на + 10(char*) и отсылай запрос. Потом, после цикла весь считанный буффер парсь регуляркой.

    Я так делал.

    ЗЫ учти что там хтмл меняется,(чтобы спарсить сколько именно найдено) если например найденно 10К больше 100К. или мильен. Так что это все надо будет учитывать. :)
     
  7. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    Мда ребята!!!
    берем запрос в том виде, в котором нам дает его контакт
    http://vkontakte.ru/search?c%5Bsection%5D=apps&c%5Bsort%5D=1
    делаем URLDecode
    отрезаем
    http://vkontakte.ru/search?
    и все остальное разбиваем на пары Имя=значение, где разделитель: символ "&"
    добавляем параметр offset=0
    посылаем POST'ом на http://vkontakte.ru/al_search.php
    следующие offset берем из ответа, пока в ответе не будет получено
    HTML:
    "has_more":false
    и ничего не нужно учитывать, не нужно парсить HTML, потом JSON, сходу все в JSON'e идет, и уж тем более не нужно узнавать количество найденных результатов т.к. все равно больше 1к не отдает поиск
     
    #7 xophet, 19 Sep 2011
    Last edited: 19 Sep 2011
    1 person likes this.
  8. enigma

    enigma Member

    Joined:
    10 Jul 2011
    Messages:
    80
    Likes Received:
    15
    Reputations:
    7
    что мда? :) по мне, удобней заранее знать сколько найдено, чем каждый раз парсит offset. единственное забыл написать про лимит 1000.
    хотя..можно будет твой вариант попробовать..
     
  9. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    Дело в том, что мое решение универсально - не важно что через поиск ищем: людей, видео, музыку и т.д. везде кол-во результатов, выдаваемых поисковиком за 1 запрос разное, и в моем варианте не нужно ручками исправлять прибавку к offset
    А как показывает практика - чем более универсально решение, тем лучше :)
    Хотя тут уж как кому нравится.
     
    #9 xophet, 20 Sep 2011
    Last edited: 20 Sep 2011
  10. B0ri$ka

    B0ri$ka Banned

    Joined:
    1 Jul 2011
    Messages:
    33
    Likes Received:
    2
    Reputations:
    0
    Больше 1000 результатов ВК всё равно не выдаёт.
     
  11. mojaev

    mojaev Member

    Joined:
    3 Jan 2009
    Messages:
    15
    Likes Received:
    22
    Reputations:
    0
    Меняем акк и погнали дальше
     
  12. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    Кэп?

    Больше 1к результатов поиск не выдает. только первыю тысячу с 1 запроса. хоть 1ккк акков поменяй.

    P.S. к программированию на языках: С/С++, C#, Delphi, .NET, Asm
    это уже не имеет ни малейшего отношения.
    Закрываем обсуждения.