C#htmlAgility Webscrape第一个Html节点内的html节点

时间:2016-06-22 23:52:15

标签: c# html-parsing html-agility-pack

我正在尝试访问这些节点 在这个网站上。 http://bcres.paragonrels.com/publink/default.aspx?GUID=2033c143-cdf1-46b4-9aac-2e27371de22d&Report=Yes

然而,它们似乎位于初始文档中的辅助Html文档中。 我很困惑如何访问辅助html路径,然后解析为

这是其中一个节点的示例。

<div style="top:219px;left:555px;width:45px;height:14px;" id="" class="mls29">2</div>

我正在使用htmlAgility包,每当我尝试访问Div时,我都会收到null。 我尝试沿着节点工作,但它没有用。

任何有助于查找必要信息的帮助或地点,我们将不胜感激

var webGet = new HtmlWeb();
var document =    webGet.Load("http://bcres.paragonrels.com/publink/default.aspx?GUID=d27a1d95- 623d-4f6a-9e49-e2e46ede136c&Report=Yes");
var divTags = document.DocumentNode.SelectNodes("/html");
var text = document.DocumentNode.InnerText;
MessageBox.Show(text);

1 个答案:

答案 0 :(得分:0)

如果您访问以下网址,您将能够抓取数据:

http://bcres.paragonrels.com/publink/Report.aspx?outputtype=HTML&GUID=2033c143-cdf1-46b4-9aac-2e27371de22d&ListingID=262103824:0&Report=Yes&view=29&layout_id=63

HtmlWeb w = new HtmlWeb();
var hd = w.Load("http://bcres.paragonrels.com/publink/Report.aspx?outputtype=HTML&GUID=2033c143-cdf1-46b4-9aac-2e27371de22d&ListingID=262103824:0&Report=Yes&view=29&layout_id=63");
var presentedBy = hd.DocumentNode.CssSelect(".mls23.at-phone-link");
if (presentedBy != null)
{
    Console.WriteLine(presentedBy.FirstOrDefault().InnerText);
}

例如,抓取Presents By字段:

enter image description here

说明:

  1. 我使用ScrapySharp nuget包和HtmlAgilityPack,所以我可以使用css选择器而不是xpath表达式 - 我觉得更容易做。

  2. 你要抓的网址是你的问题。我正在抓取页面加载后执行的最后一次获取请求,如下面的屏幕截图所示,使用Firefox开发人员工具分析网站流量/网络请求/响应:

  3. enter image description here

    我还不能确定最终触发此http请求的人/什么(可能是通过javascript代码,可能是通过主文档中请求的帧html之一(启用帧的)。

    如果您只有几个这样的网址,那么即使手动提取正确的网址也是一种选择。