【发布时间】:2021-05-19 11:30:11
【问题描述】:
我是一个初学者,我想尝试使用 C# 进行一些网页抓取,但使用此代码,它不会返回任何结果,即使它应该返回完整的项目列表。
static void Main(string[] args)
{
GetHtmlAsync();
Console.ReadLine();
}
private static async void GetHtmlAsync()
{
var url = "https://www.ebay.com/sch/i.html?_from=R40&_trksid=p2380057.m570.l1313&_nkw=playstation+5&_sacat=0";
var httpClient = new HttpClient();
var html = await httpClient.GetStringAsync(url);
var htmlDocument = new HtmlDocument();
htmlDocument.LoadHtml(html);
var ProductList = htmlDocument.DocumentNode.Descendants("ul").Where(node => node.GetAttributeValue("class", "").Equals("ListViewInner")).ToList();
}
【问题讨论】:
-
您的
Main方法没有等待对GetHtmlAsync的异步调用,因此在执行任何操作之前退出程序。您还需要将Main方法设为async并等待对GetHtmlAsync的调用。 -
不要忽略编译器警告。编译器警告的意思是“这段代码会编译,但不会像你想象的那样做”,这正是这里发生的事情。
标签: c# html .net web-scraping