Chcę zeskanować stronę internetową i filtrować najbardziej powtarzające się słowa kluczowe w miejscu.

Gdybym skanował na przykład https://www.adidas.at/ wtedy chciałbym mieć Tablica o słów kluczowych

["clothing", "shoes", "pants", "t-shirt"]

I tak dalej.

Mój pomysł był pierwszym, aby uzyskać wszystkie treści tekstowe Witch znajduje się wewnątrz <body> za pomocą $eval() i podziel ją w tablicę i użycie {x2}} i policz, ile razy na stronie pojawia się słowo na stronie i ocenić to.

Czy to sposób, aby iść lub jest dla niego proste rozwiązanie?

0
Ifaruki 17 październik 2020, 17:29

1 odpowiedź

Najlepsza odpowiedź

Powiedziałbym, że najlepsze podejście byłoby użycie page.evaluate(), a wewnątrz, nabyć outerText ciała, które przywróciłoby całą zawartość tekstu bez znaczników i rzeczy. Po tym, jak możesz przekonwertować cały tekst na małe litery (przy użyciu {x2}}) i podziel ciąg na białe znaki lub linebreaków lub pewne inne symbole, takie jak wsporniki, itp. Możesz im utrzymać liczbę powtarzających się słów za pomocą obiektu do przechowywania Kluczowe wartości liczby słów. Więc w istocie twój kod będzie wyglądał tak:

let data = await page.evaluate(() => {
  //acquire the text in body
  let content = document.querySelector("body").outerText;
  
  //convert text to lowercase and split on whitespaces and newlines
  let textArray = content.toLowerCase().replace(/[^A-Za-z0-9]/gm, " ").split(/\s+/gm);

  //object to map text to count
  let text_to_count_map = {};

  textArray.forEach(t => {
    if(text_to_count_map[t])
       text_to_count_map[t] ++;
    else
       text_to_count_map[t] = 1;
  });

  return text_to_count_map;
})

Teraz zmienna data będzie zawierać obiekt każdego słowa w ciele jako klucz, którego odpowiednia wartość byłaby ich częstotliwością w organizmie. Możesz z tym zrobić, co chcesz.

EDYCJA 1

Przetestowałem to na stronie Adidas, a potrafisz nabyć wszystkie słowa w korpusie do tablicy dla textArray zmiennej.

edycja końcowa

Użyto prostszego REGEXP, aby filtrować wszystko, co nie zawierające litery ({x0}})

enter image description here

0
lanxion 17 październik 2020, 16:40