Сканирование в Интернете: поиск слов - PullRequest
0 голосов
/ 23 мая 2019

Я готовлю веб-сканер.

Точнее, речь идет об индексации (= взятии всех слов) главной страницы и поиске всех ссылок на этой странице, чтобы затем искать слова (главной страницы) в извлеченных ссылках.

Моя проблема в функции 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, ...]
... 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...