Парсинг html

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by winsock, 28 Sep 2010.

  1. winsock

    winsock New Member

    Joined:
    15 Aug 2010
    Messages:
    57
    Likes Received:
    2
    Reputations:
    0
    Как правильно выделить память под содержимое страницы ? ведь заранее не известно какой обьем информации придет от сервера , если брать с запасом,придется делать очень приличный запас что как мне кажется не есть гуд.

    Может возможно заранее узнать какой обьем информации сервер собирается передать ?(Что бы выделить динамически "правильный" буфер под данные)


    Или таки парсить "кусками" и придумать какой-нибудь хитрый алгоритм на случай если часть нужной информации сервер пришлет в сл. раз. ?
     
  2. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Вот варианты:
    1) в Heap выделяй памяти многовато, а потом если не хватает то realloc делай
    2) при каждом чтении данный выделяй память в Heap под размер буфер. и в предыдущем куске указвай адерс следующего куска. т.е. некий список кусков. а потом когда закончится всё, то ты уже знаешь сколько надо памяти, далее просто выделяешь нужный кусок и туда запихиваешь маленькие куски
    3) выделить сразу большой кусок больше которого не должно быть считанно))))
    4) читай и сразу пиши в файл. потом целеком загрузишь файл. А там можно как угодно всё делать. хоть через FileMapping
    5) считывать HTTP заголовок и анализировать Content-length. Если его нет то один из вышеописанных методов использовать

    У каждого способа есть достоинства и недостатки. выбирать тебе
     
  3. KATYA

    KATYA Active Member

    Joined:
    9 Feb 2009
    Messages:
    236
    Likes Received:
    121
    Reputations:
    9
    А сервер в ответе не посылает V странички в первых строчках? Так можно было бы бы считать первую строчку и выдрать размер :)
     
  4. KaE

    KaE New Member

    Joined:
    27 Sep 2009
    Messages:
    44
    Likes Received:
    1
    Reputations:
    5
    Известно, поле про поле Content-length в протоколе HTTP почитайте.