151 votos

Web con Python

Me gustaría tomar tiempos diarios amanecer y atardecer desde un sitio web. ¿Es posible raspar el contenido de la web con Python? ¿Cuáles son los módulos utilizados? ¿Existe algun tutorial?

49voto

Sjaak Trekhaak Puntos 1988

Realmente recomiendo Scrapy, por razones que se elabora en esta pregunta - "¿Es que vale la pena aprender Scrapy?".

La cita de la respuesta:

  • Scrapy el rastreo es más rápida que la mecanización debido a que utiliza las operaciones asincrónicas (en la parte superior de Trenzado).
  • Scrapy tiene una mejor y más rápida de apoyo para el análisis de (x)html en la parte superior de libxml2.
  • Scrapy es un marco maduro con unicode completo, maneja redirecciones, gzip respuestas, impar codificaciones, integrado de caché de http, etc.
  • Una vez que estás en Scrapy, usted puede escribir una araña en menos de 5 minutos para que la descarga de imágenes, crea miniaturas y exportación de los datos extraídos directamente a csv o json.

12voto

hoju Puntos 7182

Junté juntos guiones de mi web raspado de trabajo en esta biblioteca.

Script de ejemplo para tu caso:

from webscraping import download, xpath
D = download.Download()

html = D.get('http://example.com')
for row in xpath.search(html, '//table[@class="spad"]/tbody/tr'):
    cols = xpath.search(row, '/td')
    print 'Sunrise: %s, Sunset: %s' % (cols[1], cols[2])

Salida:

Sunrise: 08:39, Sunset: 16:08
Sunrise: 08:39, Sunset: 16:09
Sunrise: 08:39, Sunset: 16:10
Sunrise: 08:40, Sunset: 16:10
Sunrise: 08:40, Sunset: 16:11
Sunrise: 08:40, Sunset: 16:12
Sunrise: 08:40, Sunset: 16:13

9voto

scottmrogowski Puntos 461

Le sugiero fuertemente mirando pyquery. Utiliza jquery (aka css-como) sintaxis que hace las cosas muy fácil para aquellos que vienen de ese fondo.

En su caso, sería algo así como:

from pyquery import *

html = PyQuery(url='http://www.example.com/')
trs = html('table.spad tbody tr')

for tr in trs:
  tds = tr.getchildren()
  print tds[1].text, tds[2].text

Salida:

5:16 AM 9:28 PM
5:15 AM 9:30 PM
5:13 AM 9:31 PM
5:12 AM 9:33 PM
5:11 AM 9:34 PM
5:10 AM 9:35 PM
5:09 AM 9:37 PM

7voto

danben Puntos 35312

Usted puede utilizar urllib2 para hacer las solicitudes HTTP y, a continuación, usted tendrá contenidos de la web.

Usted puede obtener algo como esto:

import urllib2
response = urllib2.urlopen('http://example.com')
html = response.read()

La Sopa de hermosa es una de python analizador de HTML que se supone que es bueno para la pantalla de raspado.

En particular, aquí está su tutorial en el análisis de un documento HTML.

Buena suerte!

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: