2017-01-23 2 views
-1

Je veux gratter un site Web d'une station de télévision avec Python et Beautifulsoup4.Trouver et obtenir des données avec Beautiful Soup

L'URL du site entier est que je lis dans: http://www.tve.es/alacarta/videos/aguila-roja/

Avec la commande html = soup.find_all("div", class_="extra mark") I Extrait du paragraphe contenant les informations intéressantes: Nombre de saisons affiche et une brève description de chaque saison.

Dans le code HTML de la page originale, cette partie ressemble à ceci:

  1. Comment puis-je déterminer le nombre de saisons? J'imagine que cela doit être quelque chose avec la recherche du nombre (longueur) de l'objet <p class="ladillo"> ou de <span>Season xy</span>.

  2. Comment puis-je extraire la description/résumé de chaque saison? Surtout parce que les deux premières saisons contiennent une étiquette comme <span style>, mais le reste des saisons ne possèdent pas cette étiquette. De plus, l'ensemble <p> « s me confondez ...

(jusqu'à présent, je ne faisais que travailler avec des expressions régulières et je ne pouvais pas trouver des informations concernant mon problème dans le bs-documentation officielle).

<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> 

Répondre

1

est ici une façon. Stockez ce que vous avez dans un nom Python div. Puis trouver la première occurrence d'un laudillo de classe, appelé firstLaudillo dans ce code. Puis itérer à travers ces éléments frères et sœurs qui examinent chacun d'eux. Ignorer les paragraphes vides et ceux qui ne sont pas pertinents. En commençant à un, incrémenter à chaque occurrence d'un autre laudillo de classe. Etc. Vous pourriez avoir besoin d'apprendre peu de choses sur la façon d'interroger BeautifulSoup pour le contenu de ces éléments.

>>> 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

Merci beaucoup, Bill! –

+0

Vous êtes le bienvenu, Tim. –