web-dev-qa-db-fra.com

Obtenez la propriété de contenu de balise meta avec BeautifulSoup et Python

J'essaie d'utiliser python et belle soupe pour extraire la partie contenu des balises ci-dessous:

<meta property="og:title" content="Super Fun Event 1" />
<meta property="og:url" content="http://superfunevents.com/events/super-fun-event-1/" />

J'obtiens BeautifulSoup pour charger la page très bien et trouver d'autres choses (cela saisit également l'ID d'article de la balise id cachée dans la source), mais je ne connais pas la bonne façon de rechercher le html et de trouver ces bits, J'ai essayé des variantes de find et findAll en vain. Le code parcourt actuellement une liste d'URL ...

#!/usr/bin/env python
# -*- coding: utf-8 -*-

#importing the libraries
from urllib import urlopen
from bs4 import BeautifulSoup

def get_data(page_no):
    webpage = urlopen('http://superfunevents.com/?p=' + str(i)).read()
    soup = BeautifulSoup(webpage, "lxml")
    for tag in soup.find_all("article") :
        id = tag.get('id')
        print id
# the hard part that doesn't work - I know this example is well off the mark!        
    title = soup.find("og:title", "content")
    print (title.get_text())
    url = soup.find("og:url", "content")
    print (url.get_text())
# end of problem

for i in range (1,100):
    get_data(i)

Si quelqu'un peut m'aider à trier le morceau pour trouver le contenu og: title et og: ce serait fantastique!

26
the_t_test_1

Fournissez le nom de la balise meta comme premier argument à find(). Ensuite, utilisez des arguments de mots clés pour vérifier les attributs spécifiques:

title = soup.find("meta",  property="og:title")
url = soup.find("meta",  property="og:url")

print(title["content"] if title else "No meta title given")
print(url["content"] if url else "No meta url given")

Les vérifications if/else ici seraient facultatives si vous savez que les propriétés meta title et url seraient toujours présentes.

37
alecxe

essaye ça :

soup = BeautifulSoup(webpage)
for tag in soup.find_all("meta"):
    if tag.get("property", None) == "og:title":
        print tag.get("content", None)
    Elif tag.get("property", None) == "og:url":
        print tag.get("content", None)
12
Hackaholic