【问题标题】:How to parse the div as i want hyperlink inside h3 tag如何解析div,因为我想要h3标签内的超链接
【发布时间】:2019-06-06 13:27:50
【问题描述】:

[开发人员您好,因为我长期以来一直在解决此类问题,但没有得到任何富有成果的结果,这导致我在 StackOverflow 上获得高级人员的帮助,因为我在 c# 控制台应用程序中使用 HtmlAgilityPack 进行网页抓取已附加图像,我想从开始解析 div,直到 h3 标记包含超链接,我该如何使用 HTML 敏捷包。

我尝试了多种解决方案进行解析,但没有取得丰硕的结果。

也附上图片1

代码在这里:

        static string url = "https://www.rozee.pk/job/jsearch/q/all/fc/1184/fin/1/";
        HtmlWeb web = new HtmlWeb();
        HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
        doc = web.Load(url);
        var nodes = doc.DocumentNode.SelectSingleNode("//div[@class='job-listing opages npages']/div[@class='j-area']/div[@class='jlist float-left']/div[@class='job']/div[@class='jcont']/div[@class='jhead']/div[@class='jobt float-left']/h3[@title]/a[@href]").InnerText;
        Console.WriteLine(nodes);`
        
    

它给了

空引用异常未处理。使用 new 关键字 create Object 的实例。

【问题讨论】:

  • 如果我理解正确,您想要实现的是获取每个工作链接?如果是这样,这个 xpath 应该对 "//div[@id='app']/div/div[2]/div[2]/div[*]/div[1]/div[1]/div/h3/a" 有帮助,然后如果你想解析 title 或其他人员,你可以使用 ParentNode 和其他属性上树。
  • 为什么它在节点对象上给出异常任何建议将不胜感激
  • 这 2 或 1 也指什么? @AntonKahwaji
  • 2 和 1 是第二个和第一个(在此处获取第二个或第一个 div)。但这不是这里的问题,我认为加载的网站作业是使用客户端 javascript 请求完成的(我不确定正确的名称),这里的 HtmlWeb 不执行它们(因为它不是浏览器),也许 selenium 可能会有所帮助,但我不确定,也许可以尝试查看网站及其所做的请求,也许您可​​以找到源并直接获取它们。

标签: c# html-agility-pack


【解决方案1】:
string htmlText = doc.ParsedText;

这将为您提供您尝试获取的 html 页面的内容。因此,您确实在此文本文件中找到了您尝试获取的特定标签。 例如:<bdi>Wordpress Developer</bdi>

您将无法在该 html 内容中看到此标记。

原因:html 敏捷包无法加载动态内容。它不能充当您的浏览器。它只是帮助您解析 html 文本。因此,您可以导航或遍历到 html。

阅读this这样的文章你就会明白了。

提示:如果您仔细查看 doc.parsedText,您会发现一个包含您正在查看的数据的脚本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-15
    • 2011-12-16
    • 1970-01-01
    • 2021-08-07
    • 2023-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多