2016-05-11 4 views
1

Я использую import.io программное обеспечение для извлечения данных из Edmunds ... Пример страницы http://www.edmunds.com/bugatti/veyron-164/2009/st-101194582/features-specs/Какой XPATH мне нужно извлечь конкретные данные с сайта Edmunds?

Я по электронной почте [email protected] несколько раз, но они помогли мне только один раз и сказал, что не хватает времени и ресурсов помогать с вопросами об отдельных проектах, а не о самом их программном обеспечении.

я успешно извлекаемые технические данные с использованием XPATH, например // тд [содержит (., «Лошадиная сила»)]/SPAN

<td> 
<label>HORSEPOWER</label> 
<span> 1001 hp @ 6000 rpm</span> 
</td> 

Но я не знаю, как извлечь функции, которые находятся между < литий > и не охватываются другим кодом с определенной меткой, но имеют определенное число < h3/h4> несколько строк выше. XPATH // li извлекает все функции в одном столбце, а также другие данные, которые мне не нужны.

Скажите, пожалуйста, XPATH, который извлекает функции по отдельным категориям, комфорту, развлечениям, функциям безопасности и т. Д. Мне нужно поместить функции в один столбец для каждой категории функций.

<h3 id="safety_feat" class="safety-feat">Safety Features</h3> 
<div class="hr thick"></div> 
<table class="items only-values" data-selenium="safety"> 
<tr> 
<td> 
<ul class="items"> 
<li><p>4-wheel ABS</p></li> 
</ul> 
</td> 

Еще одна вещь, которая добавила бы бонус в мою базу данных, чтобы извлечь названия цветов и значения RGB, было бы возможно?

<span style="display: block; background-color:rgb(255,255,255);"> 
<span style="display: block;" class="clrtxt">COLOR NAME</span> 

ответ

0

Это один из возможных XPath, например, для извлечения функции «крыша и стекла»:

//div[@class='feature-spec box'] 
/*[self::h3 or self::h4] 
    [contains(.,'Roof and Glass')] 
/following-sibling::table[1] 
//li/p 
+0

Это очень сложный XPATH, и он работает, спасибо! – Future

1

Чтобы извлечь всю спецификацию категории вы можете просто попробовать (в пример Front места, если вы хотите, чтобы другие просто изменили таблицу [@ class = 'items only-values'] 'array count

// div [@ id =' features-pod '] // table [@ class = 'items only-values'] [1]/tbody/tr/td/ul [@ class = 'items']/li/p

Чтобы извлечь имя цвета, вы можете использовать что-то вроде этого:

// диапазон [@ класс = 'об небезопасных']

Я пытался извлечь значение фонового цвета, но это было невозможно для меня!

Я просто использую селектор XPATH из Chrome на веб-сайте, немного подгоняю его и стараюсь импортировать.io ... он обычно работает!

+0

Это очень сложный XPATH, и он работает, чтобы извлечь Front Seats, но я не понимаю, что изменить, чтобы извлечь других. Другой XPATH для имени цвета извлекает как внешние, так и внутренние цвета, есть ли способ извлечь каждый из них отдельно? – Future

+0

Привет! Вот почему вы должны использовать инструмент, чтобы получить XPATH веб-сайтов. Вы можете использовать Firebug http://www.wikihow.com/Find-XPath-Using-Firebug или использовать XPATH Helper для Chrome https://chrome.google.com/webstore/detail/xpath-helper/hgimnogjllphhhkhlmebbmlgjoejdpjl?hl= эн. Я действительно рекомендую вам провести некоторое время и узнать, как работает XPATH. Это сообщество дает вам инструменты, а не решение! –

+0

Firebug делает то же самое, что и элемент Inspect в Chrome. XPATH, скопированные оттуда, основаны на позиции на странице, а не на ярлыках, и если определенное значение метки меняется в позиции со страницы на страницу, их XPATH бесполезны! Расширение XPATH Helper просто показывает данные, извлеченные различными XPATH (которые я уже делал с import.io), это не помогает мне понять, что мне нужно XPATH. – Future

2

мне удалось получить значение фонового цвета с помощью:

// * [содержит (@ идентификатор, 'внешний вид')]/SPAN [2]/@ стиль

Он возвратил все в стиле, но вы можете использовать регулярное выражение, чтобы избавиться от ненужного материала!

Надеюсь, это поможет

+0

Ваш XPATH хорошо работает и выделяет внешние и внутренние цвета отдельно по мере необходимости. Я не знаю, как использовать Regex, но я очищаю ненужные вещи, используя Excel find/replace. – Future

+0

Эй, будущее, вы можете использовать следующее регулярное выражение, чтобы получить информацию между скобками (? <= \() (. *) (? = \)) Спасибо – Nosmig