Примечания: ниже непроверено, я только что быстро просмотрел HTML-страницу и попытался понять, как он «подходит» вместе.
У каждого автомобиля есть div
с классом search-results-box
. Так ....
var rootNode = htmlDoc.DocumentNode;
var allCarResults = rootNode.SelectNodes("//div[normalize-space(@class)='search-results-box']");
foreach (var carResult in allCarResults)
{
}
Вы должны каждый «результат» автомобиль (как, каждый элемент теперь весь раздел, который представляет собой одну из машин ... так поковыряться ....
в каждом из них, данные автомобиля в другой div
, с классом search-results-data
... так ....
var dataNode = carResult.SelectSingleNode(".//div[@class='search-results-data']");
в это, теперь вы будете копать еще глубже. в название автомобиля находится в пределах другого элемента, в частности, в детстве h2
...
var carNameNode = dataNode.SelectSingleNode(".//h2/a");
string carName = carNameNode.InnerText.Trim();
цена автомобиля труднее всего благодаря ужасной разметки в HTML.
Он сидит внутри font
элемента, который находится внутри другого div
...
var carPriceNode = dataNode.SelectSingleNode(".//div[@class='results-data-price-btn']/font");
string carPrice = carPriceNode.InnerText.Trim(); // this will give you AED 24,500. Perform some logic to split that up so you just have the number...a
Проблема заключается в том, что цена склеен как «АНД 24500» в одном элементе. Поэтому вы можете легко получить элемент, но если вы хотите только номер, это логика, которую вам нужно будет выяснить для себя.
image сам, это прекрасно. Это уровень в разметке, обратно вверх, как ребенок под carResult
, поэтому до нас идти .....:
var carImageNode = carResult.SelectSingleNode(".//div[@class='search-results-img']/descendant::img");
string carImageSource = carImageNode.GetAttributeValue("src", string.Empty);
Re-редактировать
Все «Подробнее о эта информация используется автомобиль»набивают в одном месте, так что ниже будет работать на вашем примере, но может не работать для всех из них:
var descriptionNode = rootNode.SelectSingleNode("//div[@id='description']");
var entireDescription = descriptionNode.InnerText.Trim();
var splitUpDescriptionParts =
entireDescription.Split(
new[]
{
"More Details about this Used Car:", "Body Condition:", "Mechanical Condition:", "Doors:", "Cylinders:", "Body Style:",
"Drive Type:", "Warrenty:", "Description:"
},
StringSplitOptions.RemoveEmptyEntries).Select(s => s.Trim()).Where(s => !string.IsNullOrWhiteSpace(s));
string bodyCondition = splitUp.First();
string mechancialCondition = splitUp.ElementAt(1);
string amountOfDoors = splitUp.ElementAt(2);
string amountOfCylinders = splitUp.ElementAt(3);
string bodyStyle = splitUp.ElementAt(4);
string driveType = splitUp.ElementAt(5);
string warranty = splitUp.ElementAt(6);
string description = splitUp.Last();
Название и Href чего? – Arran
Если вы просто заглянете в http://jsfiddle.net/7DWfa/2/, то есть информация, как название цены и изображение src, я хочу получить их –
@Arran: я обновил свой вопрос .. я пробовал много способов, но нет удачи ... –