Ich versuche, zufällige Stichprobe von Internet-Seiten zu bekommen, ich möchte Google Suchergebnisse aus verschiedenen Gründen nicht verschrotten. Hier ist, wie ich es versucht habe;Wie man eine Stichprobe aus dem Internet macht?
import socket
from random import randint
def doesitserveawebpage(ip):
ip=str(ip)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
s.connect((ip, 80))
s.shutdown(2)
return True
except:
return False
def givemerandomwebsite():
adrformat = "%d.%d.%d.%d"
while True:
adr = adrformat % tuple(randint(0,255) for _ in range(4))
try:
print "Tring %s" % adr
name = socket.gethostbyaddr(adr)
if (doesitserveawebpage(adr)):
return name
else:
continue
except socket.herror:
continue
Nun, es funktioniert nicht. Erstens, es funktioniert zu langsam. Zweitens gibt es mir Adressen, die keine Webseiten bedienen. Kann ich diesen Code trotzdem besser machen, oder würden Sie einen anderen Weg vorschlagen, dieses Problem zu lösen?
Moderne Webserver (HTTP 1.1) * benötigen * einen Hostnamen, da sie * viele * verschiedene Seiten unter der gleichen IP-Adresse bedienen. Dein Ansatz wird nicht funktionieren. –
Können Sie die Gründe für die Probe näher erläutern? Es kann helfen, die Problemdomäne ein wenig einzugrenzen (zum Beispiel auf eine engere Anfangspopulation als das Internet). –
Wenn Sie an zufälligen IP-Adressen auf der ganzen Welt herumstöbern, stoßen Sie eher auf Computer, die keine Websites hosten als auf Maschinen, die dies tun. –