Python BeautifulSoup: toma enlaces internos de la página
Frecuentes
Visto 2,135 veces
0
Tengo un ciclo básico para buscar enlaces en una página que recuperé con urllib2.urlopen, sin embargo, solo intento seguir enlaces internos en una página.
¿Alguna idea de cómo hacer que mi ciclo de abajo obtenga solo enlaces que están en el mismo dominio?
for tag in soupan.findAll('a', attrs={'href': re.compile("^http://")}):
webpage = urllib2.urlopen(tag['href']).read()
print 'Deep crawl ----> ' +str(tag['href'])
try:
code-to-look-for-some-data...
except Exception, e:
print e
2 Respuestas
2
>>> import urllib
>>> print urllib.splithost.__doc__
splithost('//host[:port]/path') --> 'host[:port]', '/path'.
si el host es el mismo o el host está vacío (que es para rutas relativas), la URL pertenece al mismo host.
for tag in soupan.findAll('a', attrs={'href': re.compile("^http://")}):
href = tag['href']
protocol, url = urllib.splittype(href) # 'http://www.xxx.de/3/4/5' => ('http', '//www.xxx.de/3/4/5')
host, path = urllib.splithost(url) # '//www.xxx.de/3/4/5' => ('www.xxx.de', '/3/4/5')
if host.lower() != theHostToCrawl and host != '':
continue
webpage = urllib2.urlopen(href).read()
print 'Deep crawl ----> ' +str(tag['href'])
try:
code-to-look-for-some-data...
except:
import traceback
traceback.print_exc()
porque haces esto
'href': re.compile("^http://")
no se utilizarán rutas relativas. son como
<a href="/es/folder/file.htm"></a>
tal vez no use re en absoluto?
contestado el 03 de mayo de 12 a las 18:05
0
Un consejo para tu rastreador: Usa mechanize en combinación con BeautifulSoup, eso simplificará mucho tu tarea.
contestado el 04 de mayo de 12 a las 09:05
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas python web-crawler beautifulsoup or haz tu propia pregunta.
No estoy seguro de entender cómo implementar eso en mi bucle, aunque veo la lógica :) ¿Sabes cómo implementarlo en el bucle? - user1213488
dices no usar
re
en absoluto, pero podría encontrar una expresión regular que coincidahttp://whatever
y(no http://)
- jadkik94