Pregunta

Estoy usando urllib2 para leer en una página. Necesito hacer una expresión regular rápida en la fuente y extraer algunas variables, pero urllib2 se presenta como un objeto de archivo en lugar de una cadena.

Soy nuevo en Python, así que me cuesta ver cómo uso un objeto de archivo para hacer esto. ¿Hay alguna forma rápida de convertir esto en una cadena?

¿Fue útil?

Solución

Puede usar Python en modo interactivo para buscar soluciones.

si f es su objeto, puede ingresar dir (f) para ver todos los métodos y atributos. Hay uno llamado read . Ingrese help (f.read) y le indica que f.read () es la forma de recuperar una cadena de un objeto de archivo.

Otros consejos

Del documento file.read () (mi énfasis) :

  

file.read ([tamaño])

     

Lea el tamaño máximo de bytes del archivo (menos si la lectura alcanza EOF antes de obtener bytes de tamaño). Si el argumento de tamaño es negativo u omitido, lea todos los datos hasta llegar a EOF. Los bytes se devuelven como un objeto de cadena . Se devuelve una cadena vacía cuando se encuentra EOF inmediatamente. (Para ciertos archivos, como ttys, tiene sentido continuar leyendo después de que se golpea un EOF). Tenga en cuenta que este método puede llamar a la función C subyacente fread más de una vez en un esfuerzo por adquirir bytes de tamaño lo más cercano posible. También tenga en cuenta que cuando está en modo sin bloqueo, se pueden devolver menos datos de los solicitados, incluso si no se proporcionó ningún parámetro de tamaño.

Tenga en cuenta que una búsqueda de expresiones regulares en un objeto de cadena grande puede no ser eficiente, y considere hacer la búsqueda línea por línea, usando file.next () (un objeto de archivo es su propio iterador).

Michael Foord, también conocido como Voidspace, tiene un excelente tutorial sobre urllib2 que puedes encontrar aquí: urllib2 - El manual que falta

Lo que está haciendo debe ser bastante sencillo, observe este código de muestra:

import urllib2
import re
response = urllib2.urlopen("http://www.voidspace.org.uk/python/articles/urllib2.shtml")
html = response.read()
pattern = '(V.+space)'
wordPattern = re.compile(pattern, re.IGNORECASE)
results = wordPattern.search(html)
print results.groups()
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top