我想用Python和Beautifulsoup4刮掉一个电视台的网站。
我读过的整个网站的网址是:http://www.tve.es/alacarta/videos/aguila-roja/
使用命令html = soup.find_all("div", class_="extra mark")
,我提取包含有趣信息的段落:显示的季节数和每个季节的简短描述。
在原始页面的HTML中,此部分如下所示:
如何确定季节数?我想它必须是搜索<p class="ladillo">
对象或<span>Season xy</span>
的数字(长度)的东西。
如何提取每个季节的描述/摘要?特别是因为两个第一季包含<span style>
这样的标签,但其余季节都没有这个标签。此外,整个<p>
让我感到困惑......
(直到现在我只使用正则表达式,我在官方的bs文档中找不到处理我的问题的信息)。
<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>
答案 0 :(得分:1)
这是一种方式。将您拥有的内容存储在Python名称 div 中。然后在此代码中找到第一次出现的类laudillo,名为 firstLaudillo 。然后迭代这些项目下一个兄弟姐妹检查每一个。忽略空段和那些无关的段落。从一开始,每次出现另一个类laudillo时递增。等等。您可能需要了解如何询问BeautifulSoup以获取这些项目的内容。
>>> 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>
>>>