beautifulsoupとurllibを使用してWebクローラーを構築しようとしています。クローラは機能していますが、サイトのすべてのページを開くわけではありません。最初のリンクを開き、そのリンクに行き、そのページの最初のリンクを開きます。 はここに私のコードです:Webクローラーがページ内のすべてのリンクを開けない
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')
私はこれがより適切だろうと思っています:http://codereview.stackexchange.com/ – Nicarus
それを制御するルールを使用しないなら、それは決して止まらないでしょう。 – furas