C# webbrowser и нужная область сайта

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Natali Osina, 29 Jun 2011.

  1. Natali Osina

    Natali Osina New Member

    Joined:
    15 Jun 2011
    Messages:
    65
    Likes Received:
    3
    Reputations:
    0
    Всем привет.
    Люди, подскажите каким образом в вебброузере на си шарпе можно захватить не весь сайт, а только его часть.
    например сайт
    http://kyivstar.ua/ru/feedback/form/
    весь сайт грузить нет необходимости, если нужно показать только область которая отвечает за отправку сообщения.

    в принципе я попробовала сохранять текст сайта, потом обрезать то что лишнее и грузить опять в вебброузер.
    но
    1) стили теряются. никакого красивого оформления..
    2) картинка с кодом подтверждения не грузится, а если как то и загрузить то думаю код будет уже не тот.

    пока все что пришло мне в голову, это:
    1) грузить весь сайт в вебброузер
    2) бля вебброузера как то установить параметры что бы небыло полосок прокрутки
    3) программно прокрутить сайт в вебброузере что бы было видно только ту часть которая нужна. (пользователь не может крутить так как скролов нету, мы их отключили)

    НО я думаю что придумала не самый лучший вариант и даже если как то это реализовать то не знаю получу ли я то что нужно)

    На этом мои идеи исчерпаны) а дальше продвинуться мне не позволяет отсутствие практики программирования для веб

    Кто что посоветует?
    Сайт который я скинули лишь пример, с таким же успехом я могла бы скинуть ссылку на любой из сайтов.
    http://www.farmak.ua/ru/response/
    http://www.viasat-channels.tv/channel/tv1000/feedback/
    где есть отправка чего то и где нужно по всей видимости резать сайт или как...

    Спасибо за ответ.
     
    1 person likes this.
  2. Natali Osina

    Natali Osina New Member

    Joined:
    15 Jun 2011
    Messages:
    65
    Likes Received:
    3
    Reputations:
    0
    да и еще, придумайте мне задания, что бы на практике я могла закрепить знания работы с потоками.
    Спасибо.
     
  3. Feonor

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

    Joined:
    23 Jul 2008
    Messages:
    128
    Likes Received:
    52
    Reputations:
    19
    Сделай многопоточный поиск файлов например или многопоточный чекер мыл/яд/картон (нужное подчеркнуть) :cool:

    по теме. думаю тут неизбежно грузить всю страницу(до футера), вырезать форму, править теги и выпускать в веббраузер.
     
    #3 Feonor, 30 Jun 2011
    Last edited: 30 Jun 2011
  4. Natali Osina

    Natali Osina New Member

    Joined:
    15 Jun 2011
    Messages:
    65
    Likes Received:
    3
    Reputations:
    0
    я так и делала, только когда сама начинаю править теги и т.д. у меня:
    страница теряет все CSS и становится серой и скучной.
    кроме того не получалось подгрузить отображение кода подтверждения.
    если грузить его (картинку кода) в отдельный контролл то думаю он не будет соответствовать тому, что должен был подгрузится с страницей, а соответственно получается ошибочка при отправке.
    хотя не уверена и сегодня вечером попробую сделать так.
    только печальный стиль отображения страницы все равно таким образом не изменить...
    так как сделать так что бы отображался и стиль?
    спасибо.
     
  5. fox_malder

    fox_malder Active Member

    Joined:
    28 Nov 2008
    Messages:
    162
    Likes Received:
    131
    Reputations:
    73
    а регулярными выражениями никак чтоль
     
  6. Natali Osina

    Natali Osina New Member

    Joined:
    15 Jun 2011
    Messages:
    65
    Likes Received:
    3
    Reputations:
    0
    всем привет.
    пока так и ничего не получилось..
    если у кого то есть какие то идеи - отпишите...
    хотя дамаю зря я начала писать это так как еще нужно учится..
    спасибо.
     
  7. Mr.Replica

    Mr.Replica Member

    Joined:
    18 May 2010
    Messages:
    124
    Likes Received:
    41
    Reputations:
    10
    Используй httpwebrequest
    P.S а если не умеешь,то отключи картинки в браузере.
    Вот код на VB.NET
    Отключение:
    Code:
     Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            Dim regkey As Microsoft.Win32.RegistryKey = _
           My.Computer.Registry.CurrentUser
            regkey.OpenSubKey("Software\Microsoft\Internet Explorer\Main", _
            True).SetValue("Display Inline Images", "no")
        End Sub
    включение:
    Code:
     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim regkey As Microsoft.Win32.RegistryKey = _
           My.Computer.Registry.CurrentUser
            regkey.OpenSubKey("Software\Microsoft\Internet Explorer\Main", _
            True).SetValue("Display Inline Images", "yes")
        End Sub
    переведи код в С#
     
    #7 Mr.Replica, 5 Jul 2011
    Last edited: 5 Jul 2011
  8. Natali Osina

    Natali Osina New Member

    Joined:
    15 Jun 2011
    Messages:
    65
    Likes Received:
    3
    Reputations:
    0
    спасибо конечно.
    код я перевела на си шарп только не пойму зачем отключать картинки?
    опишите пожалуйста что это нам даст..
     
  9. Mr.Replica

    Mr.Replica Member

    Joined:
    18 May 2010
    Messages:
    124
    Likes Received:
    41
    Reputations:
    10
    страница будет быстрее грузиться,если речь идёт о слабом инете.
    Другого смысла упрощать страницу,я не вижу.
    З.Ы,стукни завтра в аську,раскурим твой косяк.
     
    #9 Mr.Replica, 6 Jul 2011
    Last edited: 6 Jul 2011
  10. Chaak

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

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    Natali Osina, загрузить полностью страницу, вырезать все лишнее кроме таблицы с формами, но оставить все между <head></head>. Ну и показать пользователю.
     
  11. Mr.Replica

    Mr.Replica Member

    Joined:
    18 May 2010
    Messages:
    124
    Likes Received:
    41
    Reputations:
    10
    Вот ток объясните мне.К чему это всё???
    Зачем удалять лишнее??чем оно мешает???
    :confused: :confused: :confused:
     
  12. Natali Osina

    Natali Osina New Member

    Joined:
    15 Jun 2011
    Messages:
    65
    Likes Received:
    3
    Reputations:
    0
    форма для отправки уведомлений, коментов и т.д. сама по себе маленькая.
    все что нужно с страницы с формой это только поля для ввода и картинка с кодом подтверждения.
    зачем грузить всю страницу тут? этого не нужно делать.
    смысл в том что бы в компонент веб браузер передать не всю страницу а только форму отправки, без меню, лишней инфо, кучей текста описания и т.д.
    тут вопрос не об уменшении размера, а об корректном отображении формы отправки как на сайте, с кодом подтверждения и т.д.
    Чаак спасибо за совет сегодня сама попробую и отпишу ;)
     
  13. X-rus

    X-rus Member

    Joined:
    22 Dec 2010
    Messages:
    88
    Likes Received:
    22
    Reputations:
    4
    Просто взять и обрезать страницу не получиться, тогда нарушиться её структура. Лучше сделать в программе нужную форму и сделать так, чтобы она отправляла определённый запрос на сайт.
     
  14. Natali Osina

    Natali Osina New Member

    Joined:
    15 Jun 2011
    Messages:
    65
    Likes Received:
    3
    Reputations:
    0
    я так делала, но тогда у меня проблема либо с проверкой отправилось сообщение или нет, либо с кодом подтверждения, так как тот который я грузила в pictureBox с ссылки например ...../captcha.php может быть неправильным.. я так думаю...
    и после отправок на некоторых сайтах вместо страницы с ошибкой и т.д., которую можно парсить на проверку отправилось или нет, выскакивает окошко на ява или пхп, что то типа того, которое вылазит после отправки персонального сообщения тут на форуме, с текстом отправилось или нет, и в любом случае грузится таже форма для отправки...
    грубо говоря сообщение об ошибке можно увидеть только в месседжбоксе, который генерирует ява или пхп.
    а страница переадрасации аналогична, без уведомлений об ошибке.
    вот почему я пришла к выводу что проще будет использовать компонент веббраузер для того что бы наочно видеть этот месседжбокс о правильности или неправильности отправки.
    да и в этом варианте проблем с картинкой кода подтверждения не должно быть 100 процентов.
    основная проблема в том что в веббраузере весь сайт отображать я сама не хочу) а только часть которая отвечает за отправку сообщения.
    таким образом вечером попробую способ который предложил человек Чаак и отпишу что получится.
    Если у кого есть еще идеи, просьба отписать)
    обещаю перепробовать все)
    хочу пока лето и не надо в универ подучить этот язык и научится самой писать программки)
     
  15. Chaak

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

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    Не забывай про cookie, не достаточно спарсить только лишь поля для отправки со страницы, нужны и cookie.

    В целом алгоритм примерно следующий:
    1. Загрузить первый раз страницу
    2. Сохранить все поля для отправки, а также cookie
    3. Загрузить с нужными параметрами и cookie каптчу
    4. Распознать каптчу
    5. Передать на скрипт-обработчик уже заполенные поля для ввода и cookie, к которым фактически привязана каптча
     
    #15 Chaak, 6 Jul 2011
    Last edited: 6 Jul 2011
  16. Mr.Replica

    Mr.Replica Member

    Joined:
    18 May 2010
    Messages:
    124
    Likes Received:
    41
    Reputations:
    10
    не вижу смысла в твоих мыслях.
    Вот накатал на скорую руку проект.Всё работает.переведёшь только на C#
    Code:
    тут был код.не нравится?валите.
    З.Ы. Я же сказал стукнуть в аську!
     
    #16 Mr.Replica, 6 Jul 2011
    Last edited: 6 Jul 2011
  17. [Gold]Shell

    [Gold]Shell Banned

    Joined:
    4 Jul 2011
    Messages:
    2
    Likes Received:
    1
    Reputations:
    0
    Правильно будет сказать: "Дописал"
    Можно было просто дать ссылку.
    http://forum.vingrad.ru/forum/topic-285495/0.html
     
    1 person likes this.
  18. Mr.Replica

    Mr.Replica Member

    Joined:
    18 May 2010
    Messages:
    124
    Likes Received:
    41
    Reputations:
    10
    Я сказала Накатал!Этим кодом все пользуются.
    Если такой умный,чё сам не сделал:??!!!!!!
    И да,если решил пов****ваться,то ищи оригинал,а не копипаст.
     
    #18 Mr.Replica, 6 Jul 2011
    Last edited by a moderator: 7 Jul 2011