поэтому я несколько дней пытался написать этот сканер, и я не знаю, как заставить его работать. Я искал похожие вопросы и решения, но ничего не могу найти, поэтому, пожалуйста, обратитесь к другому вопросу, если он уже был задан.
Мой веб-сканер должен найти n URL-адреса, на которые ссылается первый веб-сайт, а затем найти x URL-адресов, для которых эти n URL-адреса связаны с и так далее, пока не будет достигнута определенная глубина и с определенным количеством URL-адресов на каждом уровне. Например, я ввожу URL, который хочу сканировать, нахожу 3 ссылки, 3 ссылки на каждый из этих 3 URL и т. Д. 1 + 3 ^ 1 + 3 ^ 2 + 3 ^ 4 ... URL. Пока я написал это, но я не могу заставить его работать так, как я хочу.
from bs4 import BeautifulSoup
import requests
url = 'http://www.baidu.com'
depth = 3 #3 levels
count = 3 #amount of urls in each level
def extractURL(url, depth, count):
list = []
response = requests.get(url)
soup = BeautifulSoup(response.text, 'lxml')
tags = soup.find_all('a')
newtags = tags[:depth]
for link in newtags:
url2 = link.get('href')
if url2 is not None and url2.startswith("http"):
list.append(url2)
for url3 in list:
if(count > 0):
if not url3 is None and "http" in url:
print(url, "->", url3)
count = count-1
print("----------------") #divider for each url and connecting urls..?
extractURL(url3, depth, count)
extractURL(url, depth, count)
print("Done")
Смысл в том, чтобы он напечатал "url -> (linking) url2". Я думаю, что мой счетчик не работает, поскольку он никогда не сбрасывается, но я понятия не имею, как решить эту проблему. Заранее спасибо!