通过网络抓取中的多个页面

getting through multiple pages in web scraping

我正在从事网络抓取,从黄色页面获取值,并且在遍历页面时循环函数没有获得页面计数增量。我添加了一个循环,它继续显示来自同一页面的数据。我在下面附上我的代码。

static void Main(string[] args)
    {
        string webUrl = "https://www.yellowpages.com";
        bool Loop = true;
        HtmlWeb Web = new HtmlWeb();

        //First Url
        HtmlDocument doc = Web.Load(webUrl + "/search?search_terms=software&geo_location_terms=Los+Angeles%2C+CA");
        var HeaderName = doc.DocumentNode.SelectNodes("//a[@class='business-name']").ToList();
        foreach (var abc in HeaderName)
        {
            Console.WriteLine(abc.InnerText);
        }

        //Loop through different pages from the paging of that first url and then keep on doing it until Next button returns nothing
        while (Loop == true)
        {
            var NextPageCheck = doc.DocumentNode.SelectNodes("//a[text()='Next']/@href").ToList();
            if (NextPageCheck.Count != 0)
            {
                string link = webUrl + NextPageCheck[0].Attributes["href"].Value;
                doc = Web.Load(link);
                HeaderName = doc.DocumentNode.SelectNodes("//a[@class='business-name']").ToList();

                foreach (var abc in HeaderName)
                {
                    Console.WriteLine(abc.InnerText);
                }
            }
            else
            {
                Loop = false;
            }
        }
    }

所以我面临的问题是,它一直显示第 2 页的结果。我希望它迭代那个页面,直到没有页码为止,如果它有 400 页(总共),它应该把那个页面 url 到 400 https://www.yellowpages.com/search?search_terms=software&geo_location_terms=Los%20Angeles%2C%20CA&page=2 第2页

在调试您的代码时,我似乎在您第二次查找公司名称的行中遇到了一个空错误,在已安装的 HtmlAgilityPack 版本中,它正在编码 url所以我只是在 url

中添加了解码
string link = webUrl + NextPageCheck[0].Attributes["href"].Value;
var urlDecode = HttpUtility.HtmlDecode(link);
doc = Web.Load(urlDecode);

它似乎工作正常 - 正如评论所说,下次你 post 它会有助于 post 你得到的错误和哪一行,这样更容易和更快地追踪实际错误

希望对您有所帮助。