【发布时间】:2021-03-26 23:16:27
【问题描述】:
我正在编写一个简单的网络抓取应用程序来检索某些 PC 组件的信息。
我使用 Best Buy 作为我的测试网站,我使用 HTMLAgilityPack 作为我的爬虫。
我可以检索标题和价格;但是,我似乎无法获得可用性。
所以,我正在尝试阅读“添加到购物车”按钮元素的文本。如果可用,则显示为“添加到购物车”,否则显示为“不可用”。
但是,当我获取 XPath 并尝试将其保存到变量时,它返回 null。有人可以帮帮我吗?
这是我的代码。
var url = "https://www.bestbuy.com/site/pny-nvidia-geforce-gt-710-verto-2gb-ddr3-pci-express-2-0-graphics-card-black/5092306.p?skuId=5092306";
HtmlWeb web = new HtmlWeb();
HtmlDocument pageDocument = web.Load(url);
string titleXPath = "/html/body/div[3]/main/div[2]/div[3]/div[1]/div[1]/div/div/div[1]/h1";
string priceXPath = "/html/body/div[3]/main/div[2]/div[3]/div[2]/div/div/div[1]/div/div/div/div/div[2]/div/div/div/span[1]";
string availabilityXPath = "/html/body/div[3]/main/div[2]/div[3]/div[2]/div/div/div[7]/div[1]/div/div/div[1]/button";
var title = pageDocument.DocumentNode.SelectSingleNode(titleXPath);
var price = pageDocument.DocumentNode.SelectSingleNode(priceXPath);
bool availability = pageDocument.DocumentNode.SelectSingleNode(availabilityXPath) != null ? true : false;
Console.WriteLine(title.InnerText);
Console.WriteLine(price.InnerText);
Console.WriteLine(availability);
它正确输出了标题和价格,但可用性始终为空。
【问题讨论】:
标签: c# web-scraping xpath web-crawler html-agility-pack