问题描述
- 我使用 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);
}
}
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)