Tengo un sitio web que estoy raspando que tiene una estructura similar a la siguiente. Me gustaría poder extraer la información del bloque CData.¿Cómo puedo tomar CData de BeautifulSoup
Estoy usando BeautifulSoup para extraer otra información de la página, por lo que si la solución puede funcionar con eso, ayudaría a mantener mi curva de aprendizaje baja ya que soy un principiante de Python. Específicamente, quiero obtener los dos tipos diferentes de datos ocultos en la declaración de CData. el primero, que es solo texto, estoy bastante seguro de que puedo lanzar una expresión regular y obtener lo que necesito. Para el segundo tipo, si puedo soltar los datos que tienen elementos html en su propio beautifulsoup, puedo analizarlos.
Estoy aprendiendo python y beautifulsoup, así que estoy luchando para encontrar el hechizo mágico que me dará simplemente el CData por sí mismo.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>
Cows and Sheep
</title>
</head>
<body>
<div id="main">
<div id="main-precontents">
<div id="main-contents" class="main-contents">
<script type="text/javascript">
//<![CDATA[var _ = g_cow;_[7654]={cowname_enus:'cows rule!',leather_quality:99,icon:'cow_level_23'};_[37357]={sheepname_enus:'baa breath',wool_quality:75,icon:'sheep_level_23'};_[39654].cowmeat_enus = '<table><tr><td><b class="q4">cows rule!</b><br></br>
<!--ts-->
get it now<table width="100%"><tr><td>NOW</td><th>NOW</th></tr></table><span>244 Cows</span><br></br>67 leather<br></br>68 Brains
<!--yy-->
<span class="q0">Cow Bonus: +9 Cow Power</span><br></br>Sheep Power 60/60<br></br>Sheep 88<br></br>Cow Level 555</td></tr></table>
<!--?5695:5:40:45-->
';
//]]>
</script>
</div>
</div>
</div>
</body>
</html>
¡Ouch, eso es un bloque de script desesperadamente mal formado! Si ese es el marcado real, en realidad no funcionará en ninguna parte, ni XHTML ni HTML ... – bobince
no es real, quería condensar un bloque mucho más grande. Supongo que arranqué demasiado. –