2016-12-06 4 views
0

Ранее работающий n xpath с использованием python, и он надежно извлекает данные с веб-страницы. Теперь мне нужно использовать YQL для одной и той же веб-страницы, но она недостаточно надежная.YQL xpath недостаточно прочный

Я хочу, чтобы это 1. Последний (AUD) 2. Закрыть 3.Закройте (%) 4. Совокупный объем от https://www.shareinvestor.com/fundamental/factsheet.html?counter=TPM.AX XPath Я использую в Python, как показано ниже:

xpath('//td[contains(., "Last")]/strong/text()') 
xpath('//td[contains(., "Change")]/strong/text()')[0] 
xpath('//td[contains(., "Change (%)")]/strong/text()') 
xpath('//td[contains(., "Cumulative Volume")]/following-sibling::td[1]/text()') 

часть HTML здесь

<tr> 
       <td rowspan="2" class="sic_lastdone">Last (AUD): <strong>6.750</strong></td> 
       <td class="sic_change">Change: <strong>-0.080</strong></td> 
       <td>High: <strong>6.920</strong></td> 
       <td rowspan="2" class="sic_remarks"> 
        Remarks: <strong>-</strong> 
       </td> 
       </tr> 
       <tr> 
       <td class="sic_change">Change (%): <strong>-1.17</strong></td> 
       <td>Low: <strong>6.700</strong></td> 
       </tr> 
       <tr> 

<tr> 
       <td>Cumulative Volume (share)</td> 
       <td class='sic_volume'>3,100,209</td> 
       <td>Cumulative Value</td> 
       <td class='sic_value'></td> 
       </tr> 

Но когда я хочу применить в YQL, это не сработало. Он работает только с

select * from html where 
url="https://www.shareinvestor.com/fundamental/factsheet.html?counter=TPM.AX" 
and xpath="//td/strong" 

Он получит много данных. Я хочу конкретные данные и должен быть надежным, чтобы изменения в веб-странице, мой запрос все еще работал. Как получить надежный Ypath xpath?

ответ

0

Возможно, вам следует избегать создания xpaths в соответствии с видимым текстом.

Я всегда создаю xpath в соответствии с атрибутами тегов, поскольку они обычно не меняются. Это делает результат xpath уникальным и невосприимчивым к видимому изменению текста в HTML.

Например, "Last (AUD):" Значение XPath: //td[@class="sic_lastdone"]/strong/text()

+0

Просто выяснить один и тот же ответ XPATH, как ваша. Благодарю. Атрибуты тегов редко меняются? – vindex

+0

Да, они по существу похожи на идентификаторы. Текст может измениться (сайт поддержки нескольких языков), но атрибуты редко меняются, поскольку они не видны – Derorrist

 Смежные вопросы

  • Нет связанных вопросов^_^