c# - 当它只有属性时如何在 scrapysharp 中找到表单,即没有名称或 ID

标签 c# web-scraping scrapysharp

我不熟悉 scrapySharp 以及网络抓取。我正在尝试抓取一个安全且具有登录屏幕的网站。表单元素没有 name/id 属性,因此让我的生活变得更加复杂。我一直无法弄清楚如何使用下面的代码加载表单。非常感谢任何见解!

C#:

ScrapingBrowser browser = new ScrapingBrowser();
var homepage = browser.NavigateToPage(new Uri("https://somedomain.com/ProviderLogin.action/"));
var form1 = homepage.Find("form", ScrapySharp.Html.By.Text("form"));
var form2 = homepage.FindFormById("form[action='provider-login']");

HTML:

   <form action="provider-login" method="post">           
        <div class="login-box">   
            <input type="text" name="username" id="username" autocomplete="false" placeholder="Username" 
                   class="form-control input-lg login-input login-input-username" value="" />                   
            <input type="password" id="password" name="password" placeholder="Password" type="password"
             class="form-control input-lg login-input login-input-password" />
            <button name="login" type="submit" class="btn btn-primary btn-block btn-md login-btn" >
                Login
            </button>            
        </div>
    </form>

最佳答案

你无法在 ScrapySharp 中使用“By”实现这一点,因为它只有四种“元素搜索种类”:

{
   Text,
   Id,
   Name,
   Class
}

在您的情况下,您没有其中之一,因此请考虑使用“CssSelect”来实现您的目的:

var form = homepage.Html.CssSelect("form[action='provider-login']");
//Or
var form = homepage.Html.CssSelect("form[action*='provider-login']");

关于c# - 当它只有属性时如何在 scrapysharp 中找到表单,即没有名称或 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59113035/

相关文章:

c# - 如何让 scrapysharp 在 MVC Web 应用程序中工作?

python - 如何在Scrapy中使用Xpath表达4位数字

python - Scrapy爬取完成,没有爬取所有启动请求

c# - 如何使用ScrapySharp解析html文档中的元素?

c# - 从具有字符串值的列中删除坏字符

Python beautiful soup 每页显示相同的结果

c# - MVC 3 - 将 ViewBag 内容分配给 Javascript 字符串

c# - 修剪 switch 语句

c# - 是否有必要从扩展方法中抛出 NullReferenceException?