【问题标题】:How to scrape multiple selectors and group them如何抓取多个选择器并将它们分组
【发布时间】:2019-04-21 08:27:31
【问题描述】:

我想抓取这个页面:https://www.g2crowd.com/products/google-analytics/reviews(用于我自己的教育)

    // @nuget: HtmlAgilityPack
using System;
using HtmlAgilityPack;

public class Program
{
    public static void Main()
    {
        HtmlWeb web = new HtmlWeb();
        HtmlDocument html = web.Load("https://www.g2crowd.com/products/google-analytics/reviews");
        var textNodes = html.DocumentNode.SelectNodes("//h3[contains(@class,'review-list-heading')]");
        if (textNodes != null)
            foreach (var t in textNodes)
                Console.WriteLine(t.InnerText);
    }
}

这是我到目前为止所拥有的,它完美地拉动了每个评论标题。但是,我到底要如何避开标题和评论主体 - 明确每条评论都是独立的?

评论“正文”(意思是文本)是: //*[@id="pjax-container"]/div[2]/div[2]/div[6]/div[3]/div/div/div[2]/div[2]/div/div在 xpath 中。

或者<div itemprop="reviewBody">纯html。

这是我目前所拥有的 dotnetfiddle:https://dotnetfiddle.net/30Y0M6

请问我是否不够清楚。

【问题讨论】:

    标签: c# .net web-scraping css-selectors html-agility-pack


    【解决方案1】:

    选择父容器 <div class="mb-2 border-bottom"> 然后选择子容器

    // @nuget: HtmlAgilityPack
    using System;
    using HtmlAgilityPack;
    
    public class Program
    {
        public static void Main()
        {
            HtmlWeb web = new HtmlWeb();
            HtmlDocument html = web.Load("https://www.g2crowd.com/products/google-analytics/reviews");
            var divNodes = html.DocumentNode.SelectNodes("//div[@class='mb-2 border-bottom']");
            if (divNodes != null)
            {
                foreach (var child in divNodes)
                {
                    var allowedTags = child.SelectNodes(".//h3 | .//h5 | .//p");
                    foreach (var tag in allowedTags)
                        Console.WriteLine(tag.InnerText);
                    Console.WriteLine("======================================");
                }
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-16
      • 2019-12-22
      • 2022-01-04
      • 1970-01-01
      • 2022-10-22
      • 1970-01-01
      • 2017-06-16
      相关资源
      最近更新 更多