架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 10637|回复: 2

[ASP.NET] ASP.net 怎么爬取js渲染的数据呢?

[复制链接]
发表于 2019-8-20 14:01:13 | 显示全部楼层 |阅读模式
             最近在学习asp.net写爬虫,静态的html的数据 目前都可以爬取了,但是动态js渲染的数据还是不会
                网上查了很多资料,都没有查到,希望有大神可以提供下学习方案和实例,谢谢了!!!!




上一篇:Rolan1.3.9.3已激活捐赠版,轻量级桌面启动器
下一篇:在深圳的第83天
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2019-8-22 18:03:58 | 显示全部楼层
我提供个笨笨的方法:本地用Cef渲染后再爬
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2019-9-2 14:26:47 | 显示全部楼层
就是获取页面加载完成渲染后的html页面源码对吧。

使用 OpenQA.Selenium.Chrome
  1. ChromeDriverService service = ChromeDriverService.CreateDefaultService();
  2.                 service.HideCommandPromptWindow = true;
  3.                 ChromeOptions options = new ChromeOptions();
  4.                 options.SetLoggingPreference(LogType.Browser, LogLevel.All);
  5.                 using (var htmlLoader = new WebSiteHtmlLoader(new ChromeDriver(service, options)))
  6.                 {
  7.                     var html = htmlLoader.GetRenderedHtml(new Uri(url, UriKind.Absolute));
  8. ...
  9.                 }
复制代码

  1. public class WebSiteHtmlLoader : IDisposable
  2.     {
  3.         private readonly RemoteWebDriver _remoteWebDriver;

  4.         public WebSiteHtmlLoader(RemoteWebDriver remoteWebDriver)
  5.         {
  6.             if (remoteWebDriver == null) throw new ArgumentNullException("remoteWebDriver");
  7.             _remoteWebDriver = remoteWebDriver;
  8.         }

  9.         public string GetRenderedHtml(Uri webSiteUri)
  10.         {
  11.             if (webSiteUri == null) throw new ArgumentNullException("webSiteUri");
  12.             _remoteWebDriver.Navigate().GoToUrl(webSiteUri);
  13.             //var logs = _remoteWebDriver.Manage().Logs.GetLog(OpenQA.Selenium.LogType.Browser);
  14.             //if (logs.Count(x => x.Level == LogLevel.Severe) > 0)
  15.             //{
  16.             //    return null;
  17.             //}
  18.             //var aaaa = _remoteWebDriver.FindElementsByCssSelector(".normal.markdown-section");
  19.             //var section=_remoteWebDriver.FindElementByClassName("normal markdown-section");
  20.             //section.
  21.             //LogLevel.Severe 就是 js错误
  22.             //logs[0].Level= LogLevel.
  23.             return _remoteWebDriver.PageSource;
  24.         }

  25.         public void Dispose()
  26.         {
  27.             Dispose(true);
  28.             GC.SuppressFinalize(this);
  29.         }

  30.         private void Dispose(bool disposing)
  31.         {
  32.             if (disposing)
  33.             {
  34.                 if (_remoteWebDriver != null)
  35.                 {
  36.                     _remoteWebDriver.Quit();
  37.                 }
  38.             }
  39.         }
  40.     }
复制代码


码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-11-11 03:42

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表