Saltar al contenido

Raspado de sitios web con Python – PythonForBeginners.com

¿Qué es BeautifulSoup?

BeautifulSoup es una biblioteca de Python de terceros de Sucio.

La biblioteca está diseñada para proyectos de respuesta rápida como el raspado de pantalla.

¿Qué puede hacer?

Beautiful Soup analiza todo lo que le das y recorre el árbol
cosas para ti.

Puedes usarlo para encontrar todos los enlaces de un sitio web.

Encuentre todos los enlaces cuyas URL coincidan con “foo.com”

Busque el encabezado de la tabla que tiene texto en negrita, luego déme ese texto.

Encuentre todos los elementos “a” que tengan un atributo href, etc.

¿Qué necesito?

Primero debe instalar el módulo BeautifulSoup y luego importar el
módulo en su secuencia de comandos.

Puede instalarlo con pip install beautifulsoup4 o easy_install beautifulsoup4.

También está disponible como paquete python-beautifulsoup4 en versiones recientes de
Debian y Ubuntu.

Beautiful Soup 4 funciona tanto en Python 2 (2.6+) como en Python 3.

Hermosos ejemplos de sopa

Antes de comenzar, tenemos que importar dos módulos => BeutifulSoup y urllib2

Urlib2 se usa para abrir la URL que queremos.

Dado que BeautifulSoup no obtiene la página web por usted, tendrá que usar
el módulo urllib2 para hacer eso.

#import the library used to query a website
import urllib2

Busque y encuentre todas las etiquetas html

Usaremos el método soup.findAll para buscar en el objeto soup para
coincide con las etiquetas de texto y html dentro de la página.

Entrenamiento de Python recomendado

Para el entrenamiento de Python, nuestra principal recomendación es DataCamp.

from BeautifulSoup import BeautifulSoup

import urllib2 
url = urllib2.urlopen("http://www.python.org")

content = url.read()

soup = BeautifulSoup(content)

links = soup.findAll("a")

Eso imprimirá todos los elementos en python.org con una etiqueta “a”.

Esa es la etiqueta que define un hipervínculo, que se utiliza para vincular desde una página.
a otro

Encuentra todos los enlaces en Reddit

Obtenga el HTML de la página web de Reddit utilizando el módulo urllib2 incorporado de Python.

Una vez que tenemos el HTML real para la página, creamos un nuevo BeautifulSoup
class para aprovechar su API simple.

from BeautifulSoup import BeautifulSoup

import urllib2

pageFile = urllib2.urlopen("http://www.reddit.com")

pageHtml = pageFile.read()

pageFile.close()

soup = BeautifulSoup("".join(pageHtml))

#sAll = soup.findAll("li")

sAll = soup.findAll("a")

for href in sAll:
    print href

Elimine el sitio web del Huffington Post

Aquí hay otro ejemplo que vi en newthinktank.com

from urllib import urlopen

from BeautifulSoup import BeautifulSoup

import re

# Copy all of the content from the provided web page
webpage = urlopen('http://feeds.huffingtonpost.com/huffingtonpost/LatestNews').read()

# Grab everything that lies between the title tags using a REGEX
patFinderTitle = re.compile('')

# Grab the link to the original article using a REGEX
patFinderLink = re.compile('')

# Store all of the titles and links found in 2 lists
findPatTitle = re.findall(patFinderTitle,webpage)

findPatLink = re.findall(patFinderLink,webpage)

# Create an iterator that will cycle through the first 16 articles and skip a few
listIterator = []

listIterator[:] = range(2,16)

soup2 = BeautifulSoup(webpage)

#print soup2.findAll("title")

titleSoup = soup2.findAll("title")

linkSoup = soup2.findAll("link")

for i in listIterator:
    print titleSoup[i]
    print linkSoup[i]
    print "
"
Más lectura

http://www.crummy.com/software/BeautifulSoup/
http://www.newthinktank.com/2010/11/python-2-7-tutorial-pt-13-website-scraping/
http://kochi-coders.com/?p=122

Entrenamiento de Python recomendado

Para el entrenamiento de Python, nuestra principal recomendación es DataCamp.