Я пишу скрипт, который извлекает внутренние ссылки с сайта.Когда он идет к внутренним ссылкам в списке, он добавляет к списку нераспознанные ссылки.
Когда он добавил все внутренние ссылки, я хочу разорвать цикл.
addr = "http://andnow.com/"
base_addr = "{0.scheme}://{0.netloc}/".format(urlsplit(addr))
o = urlparse(addr)
domain = o.hostname
i_url = []
def internal_crawl(url):
headers = {'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:32.0) Gecko/20100101 Firefox/32.0'}
r = requests.get(url, headers = headers).content
soup = BeautifulSoup( r, "html.parser")
i_url.append(url)
try:
for link in [h.get('href') for h in soup.find_all('a')]:
if domain in link and "mailto:" not in link and "tel:" and not link.startswith('#'):
if link not in i_url:
i_url.append(link)
# print(link)
elif "http" not in link and "tel:" not in link and "mailto:" not in link and not link.startswith('#'):
internal = base_addr + link
if link not in i_url:
i_url.append(internal)
print(i_url)
except Exception:
print("exception")
internal_crawl(base_addr)
for l in i_url:
internal_crawl(l)
I 'Я пытался добавить следующий код, но я не могу заставить его работать.Я не уверен, что это потому, что мой список меняется.
for x in i_url:
if x == i_url[-1]:
break
Есть ли способ разорвать цикл, если один и тот же элемент является последним в списке два раза подряд?