.net模拟浏览器执行JS

在编写爬虫爬取一些页面时,存在部分内容是服务端渲染,部分内容是ajax请求数据后js渲染。为方便操作可以使用PuppeteerSharp模拟浏览器执行js代码,最后从渲染好的页面上获取自己需要的数据

首先在nuget安装PuppeteerSharp和HtmlAgilityPack

在startup里面加下面这段代码,项目启动的时候会下载chrome.exe

    
                //如果项目目录.local-chromium下没有chrome.exe则下载 用于爬取数据 执行网页js
                await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultChromiumRevision);
使用方法如下
                
                using (var browser = await Puppeteer.LaunchAsync(new LaunchOptions()
                {
                	//无头模式启动,如果设置为false则会启动一个浏览器图形界面
                    Headless = true,

                }))
                {
                    using (var page = await browser.NewPageAsync())
                    {
                        await page.SetJavaScriptEnabledAsync(true);
                        url = $"{_bookSpiderSetting.Url}{book.SkuId}.html";
                        await page.GoToAsync(url);
                        //得到html
                        var htmlText = await page.GetContentAsync();
                        
                    }
                }

使用HtmlAgilityPack来获取html上的内容


		                HtmlDocument detailDoc = new HtmlDocument();
		                detailDoc.OptionOutputAsXml = true;
		                //加载html的字符串
		                detailDoc.LoadHtml(htmlText);
		                //获取class包含item selected的div下的i标签的内容
		                var bookName = detailDoc.DocumentNode.SelectSingleNode("//div[contains(@class,'item  selected')]//i")?.InnerText

HtmlAgilityPack使用方法参考xpath教程

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值