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

页面加载 25 个标题时的屏幕截图

当我单击 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);
   
                    }
            }
    }
}
4

0 回答 0