微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

选择分页后无法从cefsharp浏览器获取HTML

如何解决选择分页后无法从cefsharp浏览器获取HTML

  1. 我使用 cefsharp 加载了一个页面,该页面页面中提供了 25 个链接
  2. 使用 FrameLoadEnd 将 HTML 内容放入 HtmlAgilityPack 文档中。
  3. 从节点获得了 25 个链接标题问题 当我点击页面上的 50 个链接并尝试获取标题时,它仍然给了我 25 个链接。这是旧页面。我不明白为什么 FrameLoadEnd 在导航到页面内的另一个链接时无法更改 html。

Screen shot when page is loading 25 titles

当我点击 50 个标题时,我无法获得 50 个标题的 html 内容

这里是代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using CefSharp;
using CefSharp.WinForms;
using System.Windows.Forms;
using HtmlAgilityPack;

namespace Hummingbird_HAP_E_Scraper
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender,EventArgs e)
        {
            chromiumWebbrowser1.Load("https://www.sciencedirect.com/search?qs=nursing");
        }
        string html;
        private void ChromiumWebbrowser1_FrameLoadEnd(object sender,CefSharp.FrameLoadEndEventArgs e)
        {
            BeginInvoke((Action)(async () =>
            {
                html = await chromiumWebbrowser1.GetSourceAsync();
            }));
        }
       HtmlAgilityPack.HtmlDocument xdoc = new HtmlAgilityPack.HtmlDocument();
        private void Button1_Click(object sender,EventArgs e)
        {
            xdoc.LoadHtml(html);
            System.Threading.Thread.Sleep(5000);
          
            HtmlNodeCollection links;
            links = xdoc.DocumentNode.SelectNodes("//h2/span/a");
                    if (links == null)
                        return;
                    foreach (HtmlNode link in links)
                    {
                         listBox1.Items.Add(link.InnerText);
   
                    }
            }
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。