私は、Googleの財務情報からさまざまな株価情報を取得するプログラムを作成しようとしています。これまでのところ私は情報をスパンから得ることができませんでした。現時点では、私はリンゴのストックに直接アクセスするようにハードコーディングしています。アップルの株価へ リンク:私は理解できない何https://www.google.com/finance?q=NASDAQ%3AAAPL&ei=NgItWIG1GIftsAHCn4zIAgXpathでスパンにアクセスしようとするとSystem.ArgumentNullExceptionが発生する(C#)
は、私は次のコマンドでクロムコンソールでそれをしようとしたとき、私は正しい出力を受け取るということです。
$x("//*[@id=\"appbar\"]//div//div//div//span");
これはビジュアルで私の現在のコードですHtmlの敏捷性パックとスタジオ2015インストール(私はcurrDocNodeCompanyNameの障害を疑う):
class StockDataAccess
{
HtmlWeb web= new HtmlWeb();
private List<string> testList;
public void FindStock()
{
var histDoc = web.Load("https://www.google.com/finance/historical?q=NASDAQ%3AAAPL&ei=q9IsWNm4KZXjsAG-4I7oCA.html");
var histDocNode = histDoc.DocumentNode.SelectNodes("//*[@id=\"prices\"]//table//tr//td");
var currDoc = web.Load("https://www.google.com/finance?q=NASDAQ%3AAAPL&ei=CdcsWMjNCIe0swGd3oaYBA.html");
var currDocNodeCurrency = currDoc.DocumentNode.SelectNodes("//*[@id=\"ref_22144_elt\"]//div//div");
var currDocNodeCompanyName = currDoc.DocumentNode.SelectNodes("//*[@id=\"appbar\"]//div//div//div//span");
var histDocText = histDocNode.Select(node => node.InnerText);
var currDocCurrencyText = currDocNodeCurrency.Select(node => node.InnerText);
var currDocCompanyName = currDocNodeCompanyName.Select(node => node.InnerText);
List<String> result = new List<string>(histDocText.Take(6));
result.Add(currDocCurrencyText.First());
result.Add(currDocCompanyName.Take(2).ToString());
testList = result;
}
public List<String> ReturnStock()
{
return testList;
}
}
私はXpath式[テキスト]をしようと私はクロムコンソルを使用しているときに働くことができる出力を受けてきましたeではなくVSである。私はforeachループを実験していますが、いくつかは他の人にそれを示唆しています。
class StockDataAccess
{
HtmlWeb web= new HtmlWeb();
private List<string> testList;
public void FindStock()
{
///same as before
var currDoc = web.Load("https://www.google.com/finance?q=NASDAQ%3AAAPL&ei=CdcsWMjNCIe0swGd3oaYBA.html");
HtmlNodeCollection currDocNodeCompanyName = currDoc.DocumentNode.SelectNodes("//*[@id=\"appbar\"]//div//div//div//span");
///Same as before
List <string> blaList = new List<string>();
foreach (HtmlNode x in currDocNodeCompanyName)
{
blaList.Add(x.InnerText);
}
List<String> result = new List<string>(histDocText.Take(6));
result.Add(currDocCurrencyText.First());
result.Add(blaList[1]);
result.Add(blaList[2]);
testList = result;
}
public List<String> ReturnStock()
{
return testList;
}
}
誰かが正しい方向で私を指すことができたら本当に感謝します。
[NullReferenceExceptionとは何か、それを修正するにはどうすればいいですか?](http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix -it) – mybirthname
完全なエラーを投稿する – Danh
「/ * @ [@ id = 'prices'] // table // tr // td」のようなエスケープを避けるには、xpathの中に一重引用符を使用する必要があります – lauda