【问题标题】:ScrapySharp does not POST formScrapySharp 不发布表单
【发布时间】:2016-04-05 23:27:32
【问题描述】:

我正在使用 ScrapySharp 在 Maryland Case Search 网络应用程序上发布一个表单来搜索案例。

使用 Fiddler,我找到了表单名称和表单字段;但是,每次我发布时,它总是返回初始搜索页面,而不是结果。

不确定我缺少什么,请参阅下面的代码。

非常感谢任何帮助。

            string url = @"http://casesearch.courts.state.md.us/casesearch/processDisclaimer.jis?disclaimer=Y";

        ScrapingBrowser Browser = new ScrapingBrowser();
        Browser.AllowAutoRedirect = true;
        Browser.AllowMetaRedirect = true;

        WebPage PageResult = Browser.NavigateToPage(new Uri(url));

        PageWebForm form = PageResult.FindForm("inquiryForm");

        form["firstName"] = "";
        form["middleName"] = "";
        form["partyType"] = "";
        form["filingStart"] = "";
        form["filingEnd"] = "";

        form["action"] = "Search";
        form["company"] = "N";
        form["countyName"] = "MONTGOMERY COUNTY";
        form["courtSystem"] = "B";
        form["filingDate"] = "4/4/2016";
        form["lastName"] = "A";
        form["site"] = "CIVIL";

        form.Method = HttpVerb.Post;

        WebPage results = form.Submit();

        Console.WriteLine(results.ToString());

【问题讨论】:

    标签: c# asp.net-web-api web-scraping forms scrapysharp http-post


    【解决方案1】:

    您需要进行异步调用。

    例如:

    WebPage mainPage = await browser.NavigateToPageAsync(new Uri(url), HttpVerb.Get,"", "text/html; charset=UTF-8");
    PageWebForm form = mainPage.FindFormById("some-form_id");
    

    ...

    WebPage web = await Task.Run(() => form.Submit()); // 提交不是异步的,所以我们强制它

    【讨论】:

      【解决方案2】:

      试试这个:

      form.FormFields.Where(f => f.Name == "countyName").FirstOrDefault().Value = "MONTGOMERY COUNTY";
      

      【讨论】:

      • 想详细说明这会有什么帮助?
      猜你喜欢
      • 1970-01-01
      • 2016-04-24
      • 1970-01-01
      • 1970-01-01
      • 2012-01-19
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 2020-09-21
      相关资源
      最近更新 更多