首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# .NET: Scraping网站

C# .NET: Scraping网站
EN

Stack Overflow用户
提问于 2018-06-18 13:53:50
回答 1查看 8.6K关注 0票数 6

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

我尝试过多种方法(123)。他们中没有一个在这个网页上工作。

最有希望的解决方案是使用硒和PhantomJS。我试过这样做,我不知道为什么它不适用于谷歌:

代码语言:javascript
复制
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);
}

不起作用:

我也尝试过使用WebBrowser控件,但页面从未完全加载:

(编辑:我发现WebBrowser只是实例化IE,在尝试在独立IE浏览器中打开目标网站之后,网页也从未完全加载,所以在WebView中看到同样的行为是有意义的。)因为这个事实,我想我一定要吃硒和幻影。)

当然,这不应该那么复杂。如何做好呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-18 18:45:18

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

安装-软件包ScrapySharp -Version 2.6.2

它具有许多有用的属性,可以访问page.For示例中的不同元素来访问页面的整个HTML,您可以使用以下方法:

代码语言:javascript
复制
        ScrapingBrowser Browser = new ScrapingBrowser();
        WebPage PageResult = Browser.NavigateToPage(new Uri("http://www.example-site.com"));
        HtmlNode rawHTML = PageResult.Html;
        Console.WriteLine(rawHTML.InnerHtml);
        Console.ReadLine();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50911100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档