Как заполнить форму на сайте и получить результат в C #? - PullRequest
2 голосов
/ 31 августа 2011

Я бы хотел, чтобы моя программа имела доступ к веб-сайту, который обрабатывает ввод строки и возвращает некоторую информацию о нем.Я хочу ввести две последовательности, отправить их и прочитать результат через программу.Веб-сайт выглядит следующим образом:

http://scansite.mit.edu/motifscan_seq.phtml

Если вы введете скажем 5031601 в качестве имени белка и DRNAYVWTLKGRTWKPTLVILRI в качестве последовательности, вы будете перенаправлены на сайт результатов.Это сайт, который я хочу читать с моей программой.Я много исследовал эту тему, но не могу найти никакого полезного решения.

Может кто-нибудь помочь мне?


РЕДАКТИРОВАТЬ:

Iпопытался создать веб-запрос со следующим кодом (адаптировано по ссылке):

        WebRequest request = WebRequest.Create(
                                   "http://scansite.mit.edu/motifscan_seq");
        request.Method = "POST";
        string postData = @"motif_option=all&protein_id=5031601&
                           sequence=DRNAYVWTLKGRTWKPTLVILRI&
                           stringency=High&submit=Submit Request";
        byte[] byteArray = Encoding.UTF8.GetBytes(postData);
        request.ContentType = "application/x-www-form-urlencoded";
        request.ContentLength = byteArray.Length;
        Stream dataStream = request.GetRequestStream();
        dataStream.Write(byteArray, 0, byteArray.Length);
        dataStream.Close();

        using (WebResponse response = request.GetResponse())
        using (Stream resSteam = response.GetResponseStream())
        using (StreamReader sr = new StreamReader(resSteam))
            File.WriteAllText("SearchResults.html", sr.ReadToEnd());
        System.Diagnostics.Process.Start("SearchResults.html");

Когда я открываю SearchResults.html, он содержит оригинальный сайт формы с введенным именем белка.Последовательность не была введена (это текстовое поле, а не текстовое поле).И это не было представлено.Я что-то упускаю или делаю не так?


Устранена проблема путем отправки запроса в адрес URI, указанный в атрибуте действия тега формы (http://scansite.mit.edu/cgi-bin/motifscan_seq).

1 Ответ

0 голосов
/ 31 августа 2011

Ваш вопрос немного расплывчатый, но звучит так, как будто вы хотите сделать, это очистка экрана . В основном это означает, что вы загружаете HTML-код страницы и анализируете его, чтобы получить нужные значения.

Рассматриваемый сайт принимает запрос POST на следующий URL:

http://scansite.mit.edu/cgi-bin/motifscan_seq

со следующими параметрами:

motif_option: all
protein_id:   5031601
sequence:     DRNAYVWTLKGRTWKPTLVILRI
stringency:   High
submit:       Submit Request

Что вам нужно сделать, это сгенерировать запрос POST к URL-адресу и передать те же пары ключ / значение, за исключением ваших значений. Вот некоторая документация о том, как сделать это с C # (посмотрите на пример наполовину вниз по странице):

http://msdn.microsoft.com/en-us/library/debx8sh9.aspx

Когда вы вернете HTML, вам нужно будет проанализировать его и найти нужные вам части. К сожалению, в HTML нет идентификаторов или классов, и все сделано из таблиц, поэтому это может быть довольно сложно. Вот еще один вопрос, касающийся очистки экрана в C #:

Очистка экрана HTML с C #

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...