Al analizar un sitio web específico, se bloquea el proceso de Python

Buscando analizar una página HTML para imágenes (desde http://www.z-img.com ), y cuando cargo la página en BeautifulSoup (bs4), Python se cuelga. Los “detalles del problema” muestran que etree.pyd fue el “Nombre del módulo de fallas”, lo que significa que probablemente sea un error de análisis, pero hasta ahora, no puedo determinar la causa.

Aquí está el código más simple que puedo resumir, en Python2.7:

 import requests, bs4 url = r"http://z-img.com/search.php?&ssg=off&size=large&q=test" r = requests.get(url) html = r.content #or #import urllib2 #html = urllib2.urlopen(url).read() soup = bs4.BeautifulSoup(html) 

junto con un resultado de muestra en PasteBin ( http://pastebin.com/XYT9g4Lb ), después de haberlo pasado por JsBeautifier.com.

Este es un error que fue corregido en la versión lxml 2.3.5 . Actualice a la versión 2.3.5 o posterior.

Oh, ahí lo tienes, naturalmente, lo primero que bash después de enviar la pregunta es la solución: la etiqueta parece estar en la raíz. Creé un nuevo archivo HTML, temp.html:

    

y pasó eso a BeautifulSoup como una cadena HTML, y eso fue suficiente para bloquear Python nuevamente. Así que solo necesito quitar esa etiqueta antes de pasar el HTML a BeautifulSoup en el futuro:

 import requests, bs4 url = r"http://z-img.com/search.php?&ssg=off&size=large&q=test" r = requests.get(url) html = r.content #or #import urllib2 #html = urllib2.urlopen(url).read() #replace the declaration with nothing, and my problems are solved html = html.replace(r"", "") soup = bs4.BeautifulSoup(html) 

Espero que esto le ahorre a alguien más algo de tiempo.