【问题标题】:C# .NET: Scraping dynamic (JS) websitesC# .NET:抓取动态 (JS) 网站
【发布时间】:2018-11-27 09:30:18
【问题描述】:

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

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

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

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 中。我认为由于这个事实,我必须使用 Selenium&PhantomJS。)

当然这不应该那么复杂。怎么做才合适?

【问题讨论】:

  • 第二个选项似乎很简单。嵌入浏览器控件,然后将其指向 url 并获取 EmbededBrowser HtmlContent。
  • 我也试过了!网页永远不会完全加载(我猜 JS 没有被评估,因为源代码中缺少网页(html)的关键部分)。也许我需要以某种方式配置浏览器控制?
  • 可能有一些属性被阻塞了。 add-blocker 会导致这种旋转吗?
  • PhantomJS 已被弃用一段时间,请尝试在无头模式下使用 Firefox 或 Chrome。

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


【解决方案1】:

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

安装包 ScrapySharp -Version 2.6.2

它有许多有用的属性来访问页面上的不同元素。例如要访问页面的整个 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();

【讨论】:

  • 这不会等到 javascript 完成执行
  • 动态页面有什么解决方案吗?我得到的和 new HttpClient().ReadStringAsync(url); 一样
  • ScrapySharp 包装了 WebAgilityPack,它不会执行 javascript 代码,因此不适合抓取动态内容。
猜你喜欢
  • 2010-09-17
  • 2019-08-16
  • 2020-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多