L'analyse de page web en python à l'aide de Magnifiques Soupe
J'ai quelques problèmes avec l'obtention de données à partir du site web. Le site de la source est ici:
view-source:http://release24.pl/wpis/23714/%22La+mer+a+boire%22+%282011%29+FRENCH.DVDRip.XviD-AYMO
il y a qqch comme ceci:
INFORMACJE O FILMIE
Tytuł............................................: La mer à boire
Ocena.............................................: IMDB - 6.3/10 (24)
Produkcja.........................................: Francja
Gatunek...........................................: L
Czas
trwania......................................:
98 min.Premiera..........................................: 22.02.2012 - Świat
Reżyseria........................................: Jacques Maillot
Scenariusz........................................: Pierre Chosson, Jacques Maillot
Aktorzy...........................................: Daniel Auteuil, Maud Wyler, Yann Trégouët,
Alain Beigel
Et je veux obtenir les données à partir de ce site web pour avoir une liste Python de chaînes:
[[Tytuł, "La mer à boire"]
[Ocena, "IMDB - 6.3/10 (24)"]
[Produkcja, Francja]
[Gatunek, Dramat]
[Czas trwania, 98 min.]
[Premiera, "22.02.2012 - Świat"]
[Reżyseria, "Jacques Maillot"]
[Scenariusz, "Pierre Chosson, Jacques Maillot"]
[Aktorzy, "Daniel Auteuil, Maud Wyler, Yann Trégouët, Alain Beigel"]]
J'ai écrit un code en utilisant BeautifulSoup, mais je ne peux pas aller plus loin, je ne sais pas ce que pour obtenir le reste à partir du site web de la source et convertir est à la chaîne ...
S'il vous plaît, à l'aide!
Mon code:
# -*- coding: utf-8 -*-
#!/usr/bin/env python
import urllib2
from bs4 import BeautifulSoup
try :
web_page = urllib2.urlopen("http://release24.pl/wpis/23714/%22La+mer+a+boire%22+%282011%29+FRENCH.DVDRip.XviD-AYMO").read()
soup = BeautifulSoup(web_page)
c = soup.find('span', {'class':'vi'}).contents
print(c)
except urllib2.HTTPError :
print("HTTPERROR!")
except urllib2.URLError :
print("URLERROR!")
Bon point:) j'ai écrit qqch comme ceci: ||c = soupe.find('span', {'class':'vi'}).contenu|| mais il ne trouve que le premier 'span' élément mais que diriez-vous de reste d'entre eux? Comment les faire sortir et de le convertir en chaîne de valeur?
Jetez un oeil à
soup.findAll
OriginalL'auteur mazix | 2012-06-27
Vous devez vous connecter pour publier un commentaire.
Le secret de l'utilisation de BeautifulSoup est de trouver des modèles cachés de votre document HTML. Par exemple, votre boucle
est dans la bonne direction, mais il sera de retour tous les paragraphes, pas seulement ceux que vous cherchez. Les paragraphes que vous cherchez, cependant, ont l'aide de la propriété d'avoir une classe
i
. À l'intérieur de ces paragraphes, on peut trouver deux plages, l'une avec la classei
et un autre avec la classevi
. Nous sommes chanceux car ces travées contient les données que vous recherchez:Donc, de la première à obtenir tous les paragraphes avec la classe donnée:
Maintenant, à l'aide de interprétations de la liste, nous pouvons générer une liste de paires, où chaque paire contient la première et la seconde travée de l'alinéa:
Maintenant que nous avons les travées, nous pouvons obtenir les textes à partir de:
Ces textes ne sont pas ok encore, mais il est facile de les corriger. Pour supprimer les points de la première, nous pouvons utiliser
rstrip()
:La
:
chaîne peut être enlevé aveclstrip()
:De l'appliquer à l'ensemble du contenu, nous avons juste besoin d'une compréhension de liste:
Et c'est tout. J'espère que cette étape-par-étape de l'exemple peut rendre l'utilisation de BeautifulSoup plus clair pour vous.
+1 pour un bien expliqué exemple
OriginalL'auteur brandizzi
Ainsi, vous obtenez la Liste que Vous souhaitez, vous aurez à écrire un peu de code pour se débarrasser de l'arrière '....'s et pour convertir les chaînes de caractères.
sauf urllib2.HTTPError :
print("HTTPERROR!")
sauf urllib2.URLError :
print("URLERROR!")
OriginalL'auteur mwoods