¿Cómo se accede a selectores DOM simples?
Pregunta
Puedo acceder a algunos de los elementos de 'clase' con un
$ret = $html->find('articleINfo'); and then print the first key of the returned array.
Sin embargo, hay otras etiquetas que necesito como span = id "firstarticle_0" y parece que no puedo encontrarla.
$ret = $html->find('#span=id[ etc ]');
En algunos casos se devuelve algo, pero no es una matriz, o es una matriz con teclas vacías.
Desafortunadamente, no puedo usar VAR_DUMP para ver el objeto, ya que VAR_DUMP produce 1000 páginas de basura ilegible. El código se ve así.
<div id="articlething">
<p class="byline">By Lord Byron and <a href="www.marriedtothesea.com">Alister Crowley</a></p>
<p>
<span class="location">GEORGIA MOUNTAINS, Canada</span> |
<span class="timestamp">Fri Apr 29, 2011 11:27am EDT</span>
</p>
</div>
<span id="midPart_0"></span><span class="mainParagraph"><p><span class="midLocation">TUSCALOOSA, Alabama</span> - Who invented cheese? Everyone wants to know. They held a big meeting. Tom Cruise is a scientologist. </p>
</span><span id="midPart_1"></span><p>The president and his family visited Chuck-e-cheese in the morning </p><span id="midPart_2"></span><p>In Russia, 900 people were lost in the balls.</p><span id="midPart_3">
Solución
HTML DOM simple se puede usar fácilmente para encontrar un tramo con una clase específica.
Si quiere todos los span con class = ubicación, entonces:
// create HTML DOM
$html = file_get_html($iUrl);
// get text elements
$aObj = $html->find('span[class=location]');
Entonces haz algo como:
foreach($aObj as $key=>$oValue)
{
echo $key.": ".$oValue->plaintext."<br />";
}
Funcionó para mí usando tu ejemplo, mi salida fue:
etiqueta = span, clase = ubicación: encontrado 1
0: Montañas de Georgia, Canadá
Espero que eso ayude ... y por favor, Simple HTML DOM es ideal para lo que hace y fácil de usar una vez que lo domina. Sigue intentándolo y tendrás varios ejemplos que solo usas una y otra vez. He raspado algunas páginas bastante locas y se vuelven más fáciles y más fáciles.
Otros consejos
Intenta usar esto. Funcionó para mí muy bien y extremadamente fácil de usar. http://code.google.com/p/phpquery/
Los documentos en el PHP Simple DOM Parser son irregulares al descifrar metaets de gráficos abiertos. Esto es lo que parece funcionar para mí:
<?php
// grab the contents of the page
$summary = file_get_html($url);
// Get image possibilities (for example)
$img = array();
// First, if the webpage has an og:image meta tag, it's easy:
if ($summary->find('meta[property=og:image]')) {
foreach ($summary->find('meta[property=og:image]') as $e) {
$img[] = $e->attr['content'];
}
}
?>