我的代码:
public static (HtmlNodeCollection title, HtmlNodeCollection price) ParsingNodesTP()
{
HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load("https://rozetka.com.ua/ua/search/?text=Asus+Zenbook+14&producer=asus&page=1");
var titles = doc.DocumentNode.SelectNodes("//a[@class='goods-tile__heading ng-star-inserted']//span");
var price = doc.DocumentNode.SelectNodes("//div[@class='goods-tile__prices']//div[@class='goods-tile__price price--red ng-star-inserted']//p//span[@class='goods-tile__price-value']");
return (titles, price);
}
我得到的错误:
System.NullReferenceException:"对象引用未设置为对象的实例。">
问题出在哪里?
F12是您在任何浏览器中的好友。查看网络选项卡。您感兴趣的数据类型为";xhr";。无需使用HTMLAgilityPack。您所需要做的就是解析url返回的Json。
-
编写代码从URL下载json字符串。以下代码适用于我:
using System.Net; using (WebClient wc = new WebClient()) { wc.Headers.Add("accept", "application/json, text/plain, */*"); wc.Headers.Add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36"); string downloadedJson = wc.DownloadString("https://search.rozetka.com.ua/ua/search/api/v6/?front-type=xl&country=UA&lang=ua&producer=asus&page=1&text=Asus+Zenbook+14"); }
-
将整个结果(downloadedJson的值(复制到剪贴板上。
-
在Visual Studio中创建一个新的类文件
-
单击"编辑">粘贴特殊>将Json粘贴为类。在代码中,您需要粘贴的第一个类的名称。默认情况下,它是名为Rootobject的父类
-
安装Newtonsoft.Json
using Newtonsoft.Json Rootobject obj = JsonConvert.DeserializeObject < Rootobject>(downloadedJson);
现在您可以循环数据数组来提取所需的所有作业信息。
Good[] goods= rootobject.data.goods;