无法在 c# 中使用 html agility pack xpath 从网页获取 Innertexts
Cant get Innertexts from webpage using html agility pack xpath in c#
这是我的代码人员。
我正在尝试获取跨度内的文本并将其存储在本地。我正在使用 html 敏捷包并尝试使用 xpath 检索文本,但节点不检索任何内容并显示为空。
这是我试图从中获取文本的页面:https://siat.sat.gob.mx/app/qr/faces/pages/mobile/validadorqr.jsf?D1=10&D2=1&D3=15030267855_SDS150309FC7
特别是“Denominación o razón social”文本。
namespace ObtencionDatosSatBeta
{
public partial class Form1 : Form
{
DataTable table;
public Form1()
{
InitializeComponent();
}
private void InitTable()
{
table = new DataTable("tabladedatosTable");
table.Columns.Add("Variable", typeof(string));
table.Columns.Add("Contenido", typeof(string));
//table.Rows.Add("Super Mario 64", "84%");
tabladedatos.DataSource = table;
}
private async void Form1_Load(object sender, EventArgs e)
{
InitTable();
HtmlWeb web = new HtmlWeb();
var doc = await Task.Factory.StartNew(() => web.Load("https://siat.sat.gob.mx/app/qr/faces/pages/mobile/validadorqr.jsf?D1=10&D2=1&D3=15030267855_SDS150309FC7"));
var nodes = doc.DocumentNode.SelectNodes("//*[@id=\"ubicacionForm: j_idt12:0:j_idt13: j_idt17_data\"]//tr//td//span");
var innerTexts = nodes.Select(node => node.InnerText);
}
private void tabladedatos_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
}
}
}
有什么想法吗?
var nodes = doc.DocumentNode.SelectNodes("//*[@id=\"ubicacionForm: j_idt12:0:j_idt13: j_idt17_data\"]//tr//td//span");
上面的代码行显示为空。
使用此 Xpath 获取具有以下 ID 的元素下的第一个跨度:ubicacionForm:j_idt10:0:j_idt11:j_idt14_data
(//*[@id='ubicacionForm:j_idt10:0:j_idt11:j_idt14_data']//span)[1]
您可以 select 通过复制 chrome 中的 HTML 元素,使用多种不同的方式 select (Ctrl + Option + J)
然后将 HTML 粘贴到 Xpather 中,您可以在其中使用 Xpath。 Xpather.com
这是我的代码人员。 我正在尝试获取跨度内的文本并将其存储在本地。我正在使用 html 敏捷包并尝试使用 xpath 检索文本,但节点不检索任何内容并显示为空。
这是我试图从中获取文本的页面:https://siat.sat.gob.mx/app/qr/faces/pages/mobile/validadorqr.jsf?D1=10&D2=1&D3=15030267855_SDS150309FC7 特别是“Denominación o razón social”文本。
namespace ObtencionDatosSatBeta
{
public partial class Form1 : Form
{
DataTable table;
public Form1()
{
InitializeComponent();
}
private void InitTable()
{
table = new DataTable("tabladedatosTable");
table.Columns.Add("Variable", typeof(string));
table.Columns.Add("Contenido", typeof(string));
//table.Rows.Add("Super Mario 64", "84%");
tabladedatos.DataSource = table;
}
private async void Form1_Load(object sender, EventArgs e)
{
InitTable();
HtmlWeb web = new HtmlWeb();
var doc = await Task.Factory.StartNew(() => web.Load("https://siat.sat.gob.mx/app/qr/faces/pages/mobile/validadorqr.jsf?D1=10&D2=1&D3=15030267855_SDS150309FC7"));
var nodes = doc.DocumentNode.SelectNodes("//*[@id=\"ubicacionForm: j_idt12:0:j_idt13: j_idt17_data\"]//tr//td//span");
var innerTexts = nodes.Select(node => node.InnerText);
}
private void tabladedatos_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
}
}
}
有什么想法吗?
var nodes = doc.DocumentNode.SelectNodes("//*[@id=\"ubicacionForm: j_idt12:0:j_idt13: j_idt17_data\"]//tr//td//span");
上面的代码行显示为空。
使用此 Xpath 获取具有以下 ID 的元素下的第一个跨度:ubicacionForm:j_idt10:0:j_idt11:j_idt14_data
(//*[@id='ubicacionForm:j_idt10:0:j_idt11:j_idt14_data']//span)[1]
您可以 select 通过复制 chrome 中的 HTML 元素,使用多种不同的方式 select (Ctrl + Option + J)
然后将 HTML 粘贴到 Xpather 中,您可以在其中使用 Xpath。 Xpather.com