Борясь за 2 дня. Я использую C# и HtmlAgilityPack в проекте .NET 4.5 winforms для извлечения данных с веб-сайта (поле, которое я хочу извлечь, это $ flow и B/S ratio). Я попадаю в поле (поток:/n/t/t/t, вместо потока 245 М), но у меня нет значения. Я понятия не имею, почему я не получаю никакого значения, когда я запрашиваю, пока вижу значение на веб-странице. Хотелось бы узнать, найдет ли кто-то другой причину node = null результат моего запроса. Это URL-адрес athe queried web-страницы: http://finance.avafin.com/tradeFlow?type=BS_RATIO&date=06%2F14%2F2013&alertId=0&symbol=spy§orId=0&industryId=0HtmlAgilityPack запрос, возвращающий значение
Я использую указанный выше адрес в качестве запроса.
Обратите внимание, что я использовал метод ниже, но с другим запросом на другой веб-странице, и это сработало, есть что-то, что не работает с текущим запросом или я подозреваю обфускацию поля для этой текущей веб-страницы.
Используемый метод:
/// <summary>
/// Gets the data.
/// </summary>
/// <param name="url"> The URL. </param>
/// <returns> </returns>
public List<string> GetFlowData(string url)
{
// ('//a[contains(@href, "genre")]')
// <td class=" sorting_1">137.27B</td>
//*[@id="tf_data"]/tbody/tr[1]/td[8] // this is the xpath as seen in navigator for first value => I get no value when used as a query => (nodes = null)
//*[@id="tf_data"]/tbody/tr[1]/td[9] // this is the xpath as seen in navigator for second value => I get no value when used as a query => (nodes = null)
// //td[@class=''] => nodes null too
// I see the b/s ratio node in body but no value /n/ttt instead using [@id='tf_data']/tbody
var nodes = LoadHtmlDoc(url, "//*[@id='tf_data']/tbody");
List<string> tickers = new List<string>();
if (nodes == null)
{
return new List<string> { "Ticker not available" };
}
int i = 0;
foreach (var v in nodes)
{
i++;
MessageBox.Show(v.InnerText + " " + i.ToString());
//// The placement of the data containing bought/sold ratio
//if (i == 7)
//{
// tickers.Add(v.InnerText);
//}
//// The placement of the data containing $ Flow
//if (i == 8)
//{
// tickers.Add(CleanFlowData(v.InnerText));
//}
}
return tickers;
}
Я сделал loadhtml, и он отлично работает, он правильно загружает html-документ –