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