Extraer datos de un formulario en CURL

¿Puede alguien guiarme sobre cómo podría extraer contenido del siguiente formulario usando DOMDocument(); . Pude extraer todos los enlaces, es decir, ../index.html, descripciones/página001, etc., y guardar los datos extraídos en la base de datos mysql, pero no sé cómo obtener el contenido, es decir, contabilidad, educación continua para adultos, etc., y guardar la información en la base de datos.

<HTML>
<HEAD></HEAD>
<BODY>
<FORM ACTION="#">
<SELECT ONCHANGE="MM_jumpMenu('parent',this,0)" NAME="menu1"> 
<OPTION VALUE="../index.html" SELECTED="SELECTED"></OPTION> 
<OPTION VALUE="descriptions/page001.html">Accounting</OPTION> 
<OPTION VALUE="descriptions/page122.html">Adult Continuing Education</OPTION>
<OPTION VALUE="descriptions/page115.html">Energy Engineering</OPTION> 
</SELECT>
</P></FORM> 
</BODY>
</HTML>


MY CURL SCRIPT
// parse the html into a DOMDocument
$dom = new DOMDocument();
@$dom->loadHTML($html);

// grab all on the page
$xpath = new DOMXPath($dom);


// GET AND LOOP THROUGH LINKS
$values = $xpath->evaluate("/html/body//option");
for ($cnt = 0; $cnt < $values->length; $cnt++) {
$value = $values->item($cnt);
$url = $value->getAttribute('value');
    //store extracted links and links source into the database function
storeLink($url,$target_url);
echo "Link stored: $url";
}

Cualquier ayuda sería apreciada por favor. Gracias.

preguntado el 12 de junio de 12 a las 19:06

¿Podría explicar "atascado en cómo obtener el contenido". No es claro. -

Lo que quiero decir con atascado es que parece que no puedo extraer datos como Contabilidad, Educación continua para adultos, etc. mientras puedo extraer los enlaces. ¿Alguna sugerencia sobre cómo extraer la siguiente información como Contabilidad, Educación continua para adultos, etc? -

2 Respuestas

Para el valor entre las etiquetas, por ejemplo, Contabilidad:

<OPTION VALUE="descriptions/page001.html">Accounting</OPTION>

Necesita ->nodeValue

...
$options = $document->getElementsByTagName('option');

foreach ($options as $option) {
  storeLink($option->getAttribute('value'), $option->nodeValue);
}

Respondido el 12 de junio de 12 a las 19:06

Muchas gracias, eres una leyenda. Usted acaba de hacer mi día !! Realmente aprecio la ayuda !! - user1444442

Aquí está la solución:

$html = '<HTML>
  <HEAD></HEAD>
  <BODY>
  <FORM ACTION="#">
  <SELECT ONCHANGE="MM_jumpMenu(\'parent\',this,0)" NAME="menu1"> 
  <OPTION VALUE="../index.html" SELECTED="SELECTED"></OPTION> 
  <OPTION VALUE="descriptions/page001.html">Accounting</OPTION> 
  <OPTION VALUE="descriptions/page122.html">Adult Continuing Education</OPTION>
  <OPTION VALUE="descriptions/page115.html">Energy Engineering</OPTION> 
  </SELECT>
  </P></FORM> 
  </BODY>
  </HTML>';

$document = new DOMDocument();
$document->loadHTML($html);
$options = $document->getElementsByTagName('option');

foreach ($options as $option) {
  echo $option->getAttribute('value');
  echo "\n";
}

Respondido el 12 de junio de 12 a las 19:06

Gracias señor por la solución, pero estaba más interesado en extraer información como Contabilidad, Educación Continua para Adultos, etc. Ya pude raspar las URL con el script de muestra que tenía arriba. - user1444442

Use $option->nodeValue en lugar de obtener atributo. - ioseb

Gracias también señor!! Está funcionando ahora. Realmente aprecio la ayuda señor. - user1444442

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.