0

我正在尝试开发一种工具来进行一些网络抓取,我之前已经为使用HTML Agility Pack的特定网站做过这个,但在这种情况下,我希望用户能够通过选择指定他想要抓取的信息网站上的文字。

我不知道的是,如果用户选择“产品 1”,我是否可以获取 HTML 标签或其他内容,以便我可以提供算法,以便在整个文档上搜索相同类型的标签?

产品一

产品描述

价格 $0.00

4

2 回答 2

2

似乎您想通过特定标签查询您的 DOM,类似于 jquery 选择器。看看下面的项目,它可能就是你要找的。

https://github.com/jamietre/csquery

于 2012-07-30T22:28:23.223 回答
0

将 HTML 加载到 HtmlDocument 对象中,然后选择出现文本输入的第一个节点。该节点具有您可能需要的一切:

    var doc = new HtmlDocument();
    string input = "Product 1";
    doc.LoadHtml("Your HTML here"); //Or doc.Load(), depends on how you're getting your HTML

    HtmlNode selectedNode = doc.DocumentNode.SelectSingleNode(string.Format("//*[contains(text(),'{0}')]", input));

    var tagName = selectedNode.Name;
    var tagClass = selectedNode.Attributes["class"].Value;
    //etc

当然,这一切都取决于实际的页面结构,“产品 1”是否显示在其他任何地方,页面中的其他元素是否也使用包含“产品 1”的同一节点等。

于 2012-07-31T04:19:05.860 回答