C#.NET:抓取动态(JS)网站

时间:2018-06-18 13:53:50

标签: c# .net selenium-webdriver web-scraping phantomjs

经过数小时的失败,我来到这里。我需要抓一个动态生成的网页(使用Vue.JS制作,但我不想分享链接)。

我尝试了多种方法(123)。它们都不适用于此网页。

最有希望的解决方案是使用Selenium和PhantomJS。我这样试过,我不确定为什么它甚至都不适合谷歌:

private void button1_Click(object sender, EventArgs e) {
        PhantomJSDriverService service = PhantomJSDriverService.CreateDefaultService();
        service.IgnoreSslErrors = true;
        service.LoadImages = false;
        service.ProxyType = "none";

        var driver = new PhantomJSDriver(service); // I also tried: new PhantomJSDriver();
        driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(10);
        driver.Url = "https://google.com";
        driver.Navigate();

        var source = driver.PageSource;
        textBox1.AppendText(source);
}

不起作用:

enter image description here

我也尝试过使用WebBrowser控件,但页面永远不会完全加载:

编辑:我发现WebBrowser只是实例化IE,在尝试在独立的IE浏览器中打开目标网站后,网页也从未完全加载,所以看到相同的行为是有意义的在WebView中。由于这个事实,我认为我已经被Selenium& PhantomJS绑定了。)

enter image description here

当然,这不应该是如此复杂。怎么做得好?

1 个答案:

答案 0 :(得分:2)

如果你需要刮一个网站,你可以使用ScrapySharp抓取框架。您可以将其作为nuget添加到项目中。 https://www.nuget.org/packages/ScrapySharp/

Install-Package ScrapySharp -Version 2.6.2

它有许多有用的属性来访问页面上的不同元素。例如,要访问页面的整个HTML,您可以使用以下内容:

{{1}}