经过几个小时的失败,我要来这里。我需要抓取一个动态生成的网页(使用Vue.JS制作,但我不愿意分享链接)。
我尝试过多种方法(1、2、3)。他们中没有一个在这个网页上工作。
最有希望的解决方案是使用硒和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);
}不起作用:

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

当然,这不应该那么复杂。如何做好呢?
发布于 2018-06-18 18:45:18
如果您需要刮一个网站,您可以使用ScrapySharp刮除框架。您可以将其作为nuget添加到项目中。https://www.nuget.org/packages/ScrapySharp/
安装-软件包ScrapySharp -Version 2.6.2
它具有许多有用的属性,可以访问page.For示例中的不同元素来访问页面的整个HTML,您可以使用以下方法:
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();https://stackoverflow.com/questions/50911100
复制相似问题