Dejo mi solución para el caso de las etiquetas web utilizando expresiones regulares 
En Python 3.x se dejó de lado urllib2, por eso el urllib.request
Sobre el último ejercicio ... sería consultar un rango de IP's y ver si tienen un servidor web corriendo y su versión?
Saludos

Código (python) [Seleccionar]
import urllib.request, re
def webrequest(url):
web = urllib.request.urlopen(url)
return str(web.read())
URL = input("Ingrese la url 'completa' de la web: ")
TAG = input("Ingrese etiqueta a buscar: ")
r = re.compile(TAG[:-1]+'.*?'+TAG[-1], re.IGNORECASE)
Tags = r.findall(webrequest(URL))
for t in Tags:
print("Etiqueta encontrada: "+ t)
print("Se han encontrado " + str(len(Tags)) + " etiquetas")
En Python 3.x se dejó de lado urllib2, por eso el urllib.request
Sobre el último ejercicio ... sería consultar un rango de IP's y ver si tienen un servidor web corriendo y su versión?
Saludos