НОВОЕ ОБНОВЛЕНИЕ:
Я сокращаю свой вопрос до того, как рекурсивно получать все ссылки с сайта, включая подсылки каждой страницы и т. Д.
Мне кажется, я знаю, как получить все подссылки одной страницы:
from bs4 import BeautifulSoup
import requests
import re
def get_links(site, filename):
f=open(filename, 'w')
url = requests.get(site)
data = url.text
soup = BeautifulSoup(data, 'lxml')
for links in soup.find_all('a'):
f.write(str(links.get('href'))+"\n")
f.close()
r="https://en.wikipedia.org/wiki/Main_Page"
filename="wiki"
get_links(r,filename)
Как мне рекурсивно убедиться, что все ссылки на сайте также собраны и записаны в один файл?
Итак, я попробовал это, и он даже не компилируется.
def is_url(link):
#checks using regex if 'link' is a valid url
url = re.findall('http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+#]|[!*/\\,() ]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', link)
return (" ".join(url)==link)
def get_links(site, filename):
f=open(filename, 'a')
url = requests.get(site)
data = url.text
soup = BeautifulSoup(data, 'lxml')
for links in soup.find_all('a'):
if is_url(links):
f.write(str(links.get('href'))+"\n")
get_links(links, filename)
f.close()