2017-01-23 3 views
-1

Ich möchte eine Website von einem Fernsehsender mit Python und Beautifulsoup4 zu kratzen.Finden und erhalten von Daten mit Beautiful Soup

Die URL der ganzen Seite, die ich in gelesen ist: http://www.tve.es/alacarta/videos/aguila-roja/

Mit dem Befehl html = soup.find_all("div", class_="extra mark") ich extrahieren Sie die Nummer, die interessanten Informationen enthält: Anzahl der gezeigten Jahreszeit und eine kurze Beschreibung der jeweiligen Saison.

im HTML-Code der ursprünglichen Seite sieht dieser Teil wie folgt aus:

  1. Wie kann ich die Anzahl der Jahreszeiten bestimmen? Ich stelle mir vor es muss etwas mit der Suche nach der Nummer (Länge) des <p class="ladillo"> Objekts oder <span>Season xy</span> sein.

  2. Wie kann ich die Beschreibung/Zusammenfassung jeder Saison extrahieren? Vor allem, weil die beiden ersten Saisons ein Tag wie <span style> enthalten, aber den Rest der Jahreszeiten nicht dieses Tag besitzen. Die Weitere die ganzen <p> ‚s mir verwirren ...

(bis jetzt habe ich nur mit regulären Ausdrücken gearbeitet und ich konnte keine Informationen Umgang mit meinem Problem in der offiziellen bs-Dokumentation finden).

<div class="extra mark"> 
    <p></p> 
    <p> 
     "Introduction with text" 
    </p> 
    <p> 
     <span style=light-height: 1.6em;"> 
     "Another words for introduction" 
     </span> 
    </p> 
    <p> 
     "Final part of introduction" 
    </p> 
    <p> 
     <strong style="color: rgb(51, 102, 255); line-heigt: 20.8px;"> 
     "This content is not available in the United States and Canada" 
     </strong> 
    </p> 
    <p></p> 
    <h3> 
     <p class="ladillo"> 
     <span>Season 1</span> 
     </p> 
    </h3> 
    <p></p> 
    <p> 
     <span style> 
     "Description of season 1" 
     </span> 
    </p> 
    <p></p> 
    <p></p> 
    <h3> 
     <p class="ladillo"> 
     <span>Season 2</span> 
     </p> 
    </h3> 
    <p></p> 
    <p> 
     <span style> 
     "Description of season2" 
     <span> 
    </p> 
    <p></p> 
    <p></p> 
    <h3> 
     <p class="ladillo"> 
     <span>Season 3</span> 
     </p> 
    </h3> 
    <p></p> 
    <p> 
     "Description of season 3" 
    </p> 
    <p></p> 
    <h3> 
     <p class="ladillo"> 
     <span>Season 4</span> 
     </p> 
    </h3> 
    <p></p> 
    <p> 
     "Description of season 4" 
    </p> 
    <p></p> 
    <div class="MenuBlind"> 
     .... 
    </div> 
</div> 

Antwort

1

Hier ist eine Art und Weise. Speichern Sie, was Sie in einem Python-Namen haben div. Dann finden Sie das erste Auftreten einer Klasse laudillo, genannt firstLaudillo in diesem Code. Dann iteriere durch diese Elemente die nächsten Geschwister, die jede von ihnen untersuchen. Ignoriere leere Absätze und solche, die irrelevant sind. Beginnend bei einem, bei jedem Auftreten einer anderen Klasse laudillo erhöhen. Und so weiter. Sie müssen vielleicht etwas darüber lernen, wie BeautifulSoup für den Inhalt dieser Artikel abgefragt wird.

>>> import requests 
>>> from bs4 import BeautifulSoup 
>>> page = requests.get('http://www.tve.es/alacarta/videos/aguila-roja/') 
>>> soup = BeautifulSoup(page.text,'lxml') 
>>> div = soup.find_all("div", class_="extra mark") 
>>> div 
[<div class="extra mark"> 
<p></p><p>Esa determinación le llevará a vivir una doble vida, maestro de día y héroe secreto al caer la noche: buscará sin descanso a los culpables de la muerte de su esposa mientras lucha contra el terror y la opresión impuestas por un malvado comisario, al servicio de una misteriosa logia secreta que conspira para derrocar al Rey. </p> 
<p><span style="line-height: 1.6em;">Hombre de modernos ideales a pesar del oscurantismo de la época que le ha tocado vivir, Gonzalo de Montalvo es un personaje atrapado en su triple condición de hombre, padre y héroe. Así, sufrirá por la muerte de su esposa mientras dos mujeres luchan por su amor, intentará ganarse la confianza y el aprecio de su único hijo y sufrirá la implacable persecución del comisario en su condición de Aguila Roja. </span></p> 
<p>Nadie, excepto su fiel criado Sátur y un misterioso fraile, conocen la verdadera identidad de Águila Roja, ni siquiera su único hijo, que siente una profunda admiración por el misterioso personaje, ajeno por completo al hecho de que viven bajo el mismo techo. El contrapunto humorístico, pragmático y pícaro a la noble y desinteresada actuación de Águila Roja lo pondrá su criado Sátur, un buscavidas hecho a sí mismo.</p> 
<p><strong style="color: rgb(51, 102, 255); line-height: 20.8px;">Este contenido no está disponible en Estados Unidos y Canadá por restricciones de derechos. </strong></p> 
<h3></h3><**p class="ladillo"**><span>Temporada 1</span></p> 
<p></p><p><span style="">El aparentemente apacible maestro Gonzalo de Montalvo, decide lanzarse a la acción tras el asesinato de su esposa en extrañas circunstancias. Esa determinació ... 

<span class="reduce" id="menosinfoprog"> 
         Ocultar información sobre "Águila Roja" 
       </span> 
</div> 
</div>] 
>>> firstLadillo = div[0].find('p',attrs={'class', 'ladillo'}) 
>>> for count, sib in enumerate(firstLadillo.fetchNextSiblings()): 
...  sib 
...  if count>10: 
...   break 
...  
<p></p> 
<p><span style="">El aparentemente apacible maestro Gonzalo de Montalvo, decide lanzarse a la acción tras el asesinato de su esposa en extrañas circunstancias. Esa determinación le llevará a vivir una doble vida, maestro de día y héroe secreto al caer la noche: buscará sin descanso a los culpables de la muerte de su esposa mientras lucha contra el terror y la opresión impuestas por un malvado comisario, al servicio de una misteriosa logia secreta que conspira para derrocar al Rey. Nadie, excepto su fiel criado Sátur y un misterioso fraile, conocen la verdadera identidad de Águila Roja.</span></p> 
<p></p> 
<h3></h3> 
<p class="ladillo"><span>Temporada 2</span></p> 
<p></p> 
<p><span style="">Desmantelada la conspiración para matar al Rey, Águila Roja se enfrentará a una misión que le obsesiona: el descubrimiento de sus verdaderos orígenes, tras haber conocido que El Comisario, a quien estaba a punto de matar en venganza por el asesinato de su esposa, es en realidad su hermano. Varias pistas le permitirán empezar a tirar de un hilo que pondrá en peligro, aún más si cabe, su vida y la de quienes le rodean.</span></p> 
<p></p> 
<h3></h3> 
<p class="ladillo"><span>Temporada 3</span></p> 
<p></p> 
<p>El ambicioso Cardenal Mendoza maneja la información que posee sobre el pasado sentimental del Rey con Laura de Montignac para chantajearlo con el objetivo de conseguir el apoyo de la Corona española en su ascenso al Papado. Por su parte, la Monarquía utilizará las habilidades e influencias de la Marquesa. El Rey le encargará una truculenta misión para vengarse del Cardenal Mendoza, y la propia Reina, que es consciente de que Lucrecia es la amante del monarca, le confía la vida del heredero al trono. Margarita se debate entre varios amoresa los que ahora podría sumarse el héroe enmascarado. Sátur, el fiel escudero de Águila Roja, decide abandonar a la familiaque le ha acogido durante tanto tiempo para ir en busca de la suya propia.</p> 
>>> 
+0

Vielen Dank, Bill! –

+0

Sie sind herzlich willkommen, Tim. –

Verwandte Themen