L’interrogazione in html utilizzando Yahoo YQL

Durante il tentativo di analizzare il codice html con Yahoo Linguaggio di Query e xpath funzionalità fornite da YQL, mi sono imbattuto in problemi di non essere in grado di estrarre “text()” o i valori di attributo.
Per esempio
perma link

select * from html where url="http://stackoverflow.com" 
and xpath='//div/h3/a'

dà un elenco di ancoraggi come xml

<results>
    <a class="question-hyperlink" href="/questions/661184/filling-the-text-area-with-the-text-when-a-button-is-clicked" title="In ASP.net, I need the code to fill the text area (in the form) when a button is clicked. Can you help me through by showing a simple .aspx code containing the script tag? ">Filling the text area with the text when a button is clicked</a>...
</results> 

Ora, quando cerco di estrarre il valore del nodo utilizzando

select * from html where url="http://stackoverflow.com" 
and xpath='//div/h3/a/text()'

I risultati concatenati, piuttosto che una lista di nodo
ad esempio,

<results>Xcode: attaching to a remote process for debuggingWhy is b
…… </results>

Come faccio a separare nodo liste e come faccio a selezionare i valori di attributo ?

Una query come questa

select * from html where url="http://stackoverflow.com"
and xpath='//div/h3/a[@href]'

mi ha dato gli stessi risultati per l’esecuzione di query div/h3/a

InformationsquelleAutor Cherian | 2009-03-19

 

One Reply
  1. 20

    YQL richiede l’espressione xpath per valutare un itemPath piuttosto che il nodo di testo. Ma una volta che si dispone di un itemPath è possibile proiettare valori diversi da albero

    In altre parole un ItemPath deve puntare al Nodo nel codice HTML risultante, piuttosto che il contenuto del testo e attributi. YQL restituisce tutti i nodi corrispondenti e i loro figli quando si select * from dati.

    esempio

    select * from html where url="http://stackoverflow.com" and xpath='//div/h3/a'

    Questo restituisce tutti i corrispondenti xpath. Ora, a progetto, il contenuto del testo è possibile proiettare fuori uso

    select content from html where url="http://stackoverflow.com" and xpath='//div/h3/a'

    “contenuto” restituisce il testo per i contenuti presenti all’interno del nodo.

    Per la proiezione fuori gli attributi, è possibile specificare rispetto all’espressione xpath. In questo caso, dal momento che è necessario href relativa a un.

    select href from html where url="http://stackoverflow.com" and xpath='//div/h3/a'

    restituisce
    <results>
    <a href="/questions/663973/putting-a-background-pictures-with-leds"/>
    <a href="/questions/663013/advantages-and-disadvantages-of-popular-high-level-languages"/>
    ....
    </results>

    Se è necessaria sia l’attributo ‘href’ e textContent, quindi è possibile eseguire il seguente YQL query:

    select href, content from html where url="http://stackoverflow.com" and xpath='//div/h3/a'

    restituisce:

    <results> <a href="/questions/663950/double-pointer-const-issue-issue">double pointer const issue issue</a>... </results>

    Speranza che aiuta. fatemi sapere se avete ulteriori domande su YQL.

    • Funziona come un fascino!

Lascia un commento