我如何填写网站表单并检索c#中的结果

本文关键字:结果 检索 何填写 网站 表单 | 更新日期: 2023-09-27 18:07:02

我希望我的程序能够访问一个网站,处理字符串输入并返回一些关于它的信息。我想输入两个序列,提交它们并通过程序读取结果。网址如下:

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

如果您输入5031601作为蛋白质名称和DRNAYVWTLKGRTWKPTLVILRI作为序列,您将被重定向到结果站点。这是我希望能够与我的程序阅读的网站。关于这个问题我已经研究了很多,但是我似乎没有得到任何有用的解决方案。

谁能帮我一下吗?
编辑:

我尝试用以下代码创建一个web请求(改编自链接):

        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时,它包含了输入蛋白质名称的原始表单站点。还没有输入序列(它是一个文本区域,而不是一个文本框)。而且还没有提交。我有什么遗漏或做错的吗?


通过将请求发送到表单标签(http://scansite.mit.edu/cgi-bin/motifscan_seq)的action属性中声明的uri来解决问题。

我如何填写网站表单并检索c#中的结果

你的问题有点模糊,但听起来你想做的是屏幕抓取。它的基本意思是下载页面的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中没有id或类,所有内容都是由表构成的,因此这可能相当具有挑战性。下面是另一个关于c#中屏幕抓取的问题:

使用c#抓取HTML屏幕