page - scraping en python
Obtener propiedad de contenido de etiqueta meta con BeautifulSoup y Python (2)
Estoy tratando de usar Python y una sopa hermosa para extraer la parte de contenido de las etiquetas a continuación:
<meta property="og:title" content="Super Fun Event 1" />
<meta property="og:url" content="http://superfunevents.com/events/super-fun-event-1/" />
Estoy obteniendo que BeautifulSoup cargue la página correctamente y encuentre otras cosas (esto también toma la identificación del artículo de la etiqueta de identificación oculta en la fuente), pero no conozco la forma correcta de buscar el html y encontrar estos bits, He intentado variaciones de encontrar y encontrar todo en vano. El código itera sobre una lista de urls en la actualidad ...
#!/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 alguien puede ayudarme a ordenar el bit para encontrar el contenido de og: title y og: ¡sería fantástico!
Proporcione el nombre de la etiqueta meta
como el primer argumento para find()
. Luego, use argumentos de palabras clave para verificar los atributos específicos:
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")
La opción if
/ else
chequea aquí sería opcional si sabe que las meta propiedades de título y url siempre estarán presentes.
prueba esto :
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)