-1

AngleSharp を使用して walmart.com のいくつかのページをスクレイピングしようとしていますが、何らかの理由でうまくいきません。過去にAngleSharpを使用して多くのサイトを問題なくスクレイピングしてきましたが、ここではうまくいきません.

簡単にするために、ここに 1 つのページを示します: https://www.walmart.com/ip/50908276、アイテムの価格 (現在 $9.99) を取得しようとしています。Chrome のコンソールに入力document.getElementsByClassName("Price-characteristic")すると、60 件の[span.Price-characteristic]結果のリストが表示されます。完全。しかし、AngleBrackets を使用して同じことを試みると、何も返されません。

これが私のコードです:

using AngleSharp;
using AngleSharp.Dom;

public async void GetPrice()
{
    var config = Configuration.Default.WithDefaultLoader();
    string address = "https://www.walmart.com/ip/50908276";

    IDocument document = await
    BrowsingContext.New(config).OpenAsync(address);

    var priceDollar = document.GetElementsByClassName("Price-characteristic");
}

私はHTMLにあまり詳しくないので、無知で申し訳ありません。

4

1 に答える 1

1

HtmlAgilityPackと XPath の使用

using (var client = new HttpClient())
{
    client.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36");
    var html = await client.GetStringAsync("https://www.walmart.com/ip/50908276");
    var doc = new HtmlAgilityPack.HtmlDocument();
    doc.LoadHtml(html);
    var price = doc.DocumentNode
                    .SelectSingleNode("//*[@data-product-price]")
                    .Attributes["data-product-price"]
                    .Value;

}

このコードは価格9.99として返します

于 2017-01-03T20:40:51.070 に答える