Ich versuche, einen Web-Crawler mit beautifulsoup und urllib zu erstellen. Der Crawler funktioniert, aber er öffnet nicht alle Seiten einer Site. Es öffnet den ersten Link und geht zu diesem Link, öffnet den ersten Link dieser Seite und so weiter. Hier ist mein Code:Web-Crawler öffnet nicht alle Links auf einer Seite
from bs4 import BeautifulSoup
from urllib.request import urlopen
from urllib.parse import urljoin
import json, sys
sys.setrecursionlimit(10000)
url = input('enter url ')
d = {}
d_2 = {}
l = []
url_base = url
count = 0
def f(url):
global count
global url_base
if count <= 100:
print("count: " + str(count))
print('now looking into: '+url+'\n')
count += 1
l.append(url)
html = urlopen(url).read()
soup = BeautifulSoup(html, "html.parser")
d[count] = soup
tags = soup('a')
for tag in tags:
meow = tag.get('href',None)
if (urljoin(url, meow) in l):
print("Skipping this one: " + urljoin(url,meow))
elif "mailto" in urljoin(url,meow):
print("Skipping this one with a mailer")
elif meow == None:
print("skipping 'None'")
elif meow.startswith('http') == False:
f(urljoin(url, meow))
else:
f(meow)
else:
return
f(url)
print('\n\n\n\n\n')
print('Scrapping Completed')
print('\n\n\n\n\n')
Ich denke, das wäre hier angemessener: http://codereview.stackexchange.com/ – Nicarus
Wenn Sie keine Regel verwenden, um es zu steuern, dann wird es nie aufhören. – furas