一键式获取多个网站的请求,例如skyscanner

时间:2019-07-19 13:21:47

标签: asp.net-mvc api asp.net-core get-request

我是.netcore知识的新手。最近,我对使用.netcore开发某些代码感兴趣,该代码的工作方式类似于skyscrapper.com。例如,当您在skyscanner上搜索任何内容时,它只需单击一下即可遍历多个站点,然后抓取或剪贴所需的数据,然后将其显示在网站上。 .netcore如何处理GET请求。 例如,如果我有5个不同的站点。 example1.com-example5.com。 最好的方法是什么?

我已经使用HttpAgilityPack在一个站点上尝试过。

        private static async Task startCrawlerasync2()
        {
            var url = "https://www.automobile.tn/fr/neuf/bmw";
            var httpClient = new HttpClient();
            var html = await httpClient.GetStringAsync(url);
            var htmlDocument = new HtmlDocument();
            htmlDocument.LoadHtml(html);


            var cars = new List<Cars>();
            var divs = htmlDocument.DocumentNode.Descendants("div").Where(node => node.GetAttributeValue("class", "").Equals("versions-item")).ToList();

            foreach (var div in divs)
            {
                var car = new Cars
                {
                    Model = div.Descendants("h2").FirstOrDefault().InnerText,
                    Price = div.Descendants("div").FirstOrDefault().InnerText,
                    Link = div.Descendants("a").FirstOrDefault().ChildAttributes("href").FirstOrDefault().Value,
                    ImageUrl = div.Descendants("img").FirstOrDefault().ChildAttributes("src").FirstOrDefault().Value

                };
                cars.Add(car);
            }
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine(cars[i]);
            }
        }

1 个答案:

答案 0 :(得分:0)

您可能需要使用诸如SignalR(或直接使用套接字)之类的技术,将请求运行到服务器上的5个网站,并在请求完成时更新UI。