通过网络抓取中的多个页面
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 你得到的错误和哪一行,这样更容易和更快地追踪实际错误
希望对您有所帮助。
我正在从事网络抓取,从黄色页面获取值,并且在遍历页面时循环函数没有获得页面计数增量。我添加了一个循环,它继续显示来自同一页面的数据。我在下面附上我的代码。
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 你得到的错误和哪一行,这样更容易和更快地追踪实际错误
希望对您有所帮助。