Я готовлю веб-сканер.
Точнее, речь идет об индексации (= взятии всех слов) главной страницы и поиске всех ссылок на этой странице, чтобы затем искать слова (главной страницы) в извлеченных ссылках.
Моя проблема в функции indexe (): когда я пытаюсь восстановить все вторичные страницы, после проверки того, что слова нет в стоп-листе (= местоимения, статьи и т. Д.) И что эти слова находятся в второстепенные страницы.
Так что я могу искать все слова (с главной страницы) на дополнительных страницах
Вот что я сейчас сделал:
import requests
from bs4 import BeautifulSoup
def extract(links) :
page = requests.get(links).text
soup = BeautifulSoup(page)
for link in soup.find_all('a', href=True):
print(link['href'])
def clean_html(page) :
cleanr = re.compile('<.*?>')
cleantext = re.sub(cleanr, '', page)
return cleantext
def indexer(dex, words, url):
for x in url :
x = requests.get(x).text
x = clean_html(x)
x = x.lower()
x = x.split()
for word in words:
word = word.lower()
word = clean(word)
if word not in stoplist :
if word in x :
# print(x) THE PROBLEM: I'm trying to retrieve the secondary pages, but I get only the last link, (36 times)
add(dex, word, url)
def add(dex, word, url):
try:
dex[word].append(url)
except KeyError:
dex[word] = [url]
def main(url, idx) :
list_urls = extract(url)
main_page = requests.get(url).text
main_page = clean_html(main_page)
main_page = main_page.split()
idx = {}
indexe(idx, main_page, list_urls)
prd(idx)
def prd(d) :
for c in sorted(d) :
print( '\t', c, ':', d[c])
stoplist = ['i', 'me', 'my', 'myself', 'we', 'our', 'ours', 'ourselves', 'you', "you're"]
Я хочу найти слова на второстепенных страницах, надеюсь, что результат будет примерно таким
Word1 : [url1, url2]
Word2 : [url1, url3, ...]
...