架构师_程序员

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 165|回复: 2

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

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




上一篇:Rolan1.3.9.3已激活捐赠版,轻量级桌面启动器
下一篇:在深圳的第83天
帖子永久地址: 

架构师_程序员 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与架构师_程序员享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和架构师_程序员的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、架构师_程序员管理员和版主有权不事先通知发贴者而删除本文

码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
沙发
发表于 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|Archiver|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2019-9-17 12:26

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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