Çözüldü Puppeteer ile açık olan Chromium sekmesindeki sayfada yazı bulma

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

561400

Centipat
Katılım
7 Temmuz 2022
Mesajlar
390
Çözümler
5
Merhaba puppeteer da halihazırda çalışan projem var en son olarak ekranda açık olan Chromium penceresinde sekmede açık olan sayfada kelime aratmasını istiyorum ama belirli bir linki değil açık olan sayfayı. Birden fazla kelime aratacak herhangi birbiri varsa ture.txt içine "kelimelerden biri bulundu" yok ise false.txt içine "kelimelerden herhangi biri bulunamadı" gibi bir cümle yazdırması gerekiyor ve her seferinde alt alta bu işlemi her açılışta yapacak nasıl yapabilirim?
 
Çözüm
Evet aynen öyle ama her seferinde alt alta var.txt var var gibi yoksa yok.txt yok yok gibi alt alta yazdırsın.
Fonksiyonu güncelledim.
JavaScript:
async function searchPage(page, pattern = [], trueFilePath, falseFilePath) {
  const content = await page.content();
  let result = false;
  for (let i = 0; i < pattern.length; i++) {
    if (content.replace(/\s/g, "").includes(pattern[i])) {
      result = true;
      break;
    }
  }
  const filePath = result ? trueFilePath : falseFilePath;
  const text = result ? "Bulundu \r\n" : "Bulunamadı \r\n";
  if (!fs.existsSync(filePath)) {
    fs.writeFileSync(filePath, text);
  } else {
    fs.open(filePath, "a", 666, function (e, id) {
      fs.write(id, text, null, "utf8", function () {
        fs.close(id);
      });
    });
  }
}

Kullanmak için son parametre olarak. Bulunamadı yazmasını istediğiniz dosyanın ismini giriyorsunuz.
await searchPage(page, kelimeler, "Var.txt", "Yok.txt");
Ama olmuyor başlıkta olanı algılamıyor.

Doğru yazıyorum ama direk yok.txt ye atıyor.

Bu işlemi yaparken bulunduğum crhomium penceresindeki cookileri silmeden bakıyor değil mi?

Eğer çerezleri temizleyerek bakıyorsa ya da çerezleri görmeden bakıyorsa bulamaması normal.

Reis bulmuyor ne yapabilirim?
 
Son düzenleme:
Ama olmuyor başlıkta olanı algılamıyor.

Doğru yazıyorum ama direk yok.txt ye atıyor.

Bu işlemi yaparken bulunduğum crhomium penceresindeki cookileri silmeden bakıyor değil mi?

Eğer çerezleri temizleyerek bakıyorsa ya da çerezleri görmeden bakıyorsa bulamaması normal.

Reis bulmuyor ne yapabilirim?
Hocam direk kaynak koduna bakıyor diye biliyorum. Fonksiyondaki "waitUntil" kısmında yazan yeri "domcontentloaded" değilde "networkidle2" ile değiştirip dener misiniz?
 
JavaScript:
await page.goto("https://technopat.net/sosyal", {
    waitUntil: "networkidle2",
 });
page.goto'ya URL'yi verdikten sonra ayar olarak bu şekilde verin.
 
JavaScript:
await page.goto("https://technopat.net/sosyal", {
 waitUntil: "networkidle2",
 });
Page. Goto'ya URL'yi verdikten sonra ayar olarak bu şekilde verin.

Maalesef hala bulmuyor.

Direk yok.txt ye düşüyor.

JavaScript:
await page.goto("https://technopat.net/sosyal", {
 waitUntil: "networkidle2",
 });
Page. Goto'ya URL'yi verdikten sonra ayar olarak bu şekilde verin.

JavaScript:
const wordsToSearch = ['firstword', 'secondword',

'thirdword', 'fourthword'];

const contentPage = await page.$eval('body', el => el.textContent);
const result = contentPage.split(/\s+/).filter(text => wordsToSearch.includes(text));

Başka bir forum sitesinde sordum birisi böyle bir kod attı ama nasl kullanacağımı çözemedim.
 
Son düzenleme:
Maalesef hala bulmuyor.

Direk yok.txt ye düşüyor.



JavaScript:
const wordsToSearch = ['firstword', 'secondword',

'thirdword', 'fourthword'];

const contentPage = await page.$eval('body', el => el.textContent);
const result = contentPage.split(/\s+/).filter(text => wordsToSearch.includes(text));

Başka bir forum sitesinde sordum birisi böyle bir kod attı ama nasl kullanacağımı çözemedim.
Arkadaşın kodu tagleri kaldırarak arama yapıyor yani illa title içinde varsa yoksa diye aratmak istiyorsanız olmaz. Ve sadece body'yi aratıyor. Birazdan fonksiyonu güncelleyip deneyeceğim. Siz title'ı olduğu gibi yazmanıza rağmen olmuyor mu? Bendede olmamıştı, güncelledim fonksiyonu şuan sorunsuz olmalı. Tekrar deneyin bakalım. Fonksiyonu bununla değiştirmeniz yeterli.

JavaScript:
async function searchPage(page, pattern = [], trueFilePath, falseFilePath) {
  const content = await page.content();
  fs.writeFileSync("Content.txt", content);
  let result = false;
  for (let i = 0; i < pattern.length; i++) {
    if (content.split(/\s+/).filter((text) => pattern.includes(text))) {
      result = true;
      break;
    }
  }
  const filePath = result ? trueFilePath : falseFilePath;
  const text = result ? "Bulundu \r\n" : "Bulunamadı \r\n";
  if (!fs.existsSync(filePath)) {
    fs.writeFileSync(filePath, text);
  } else {
    fs.open(filePath, "a", 666, function (e, id) {
      fs.write(id, text, null, "utf8", function () {
        fs.close(id);
      });
    });
  }
}
 
Son düzenleme:
Arkadaşın kodu tagleri kaldırarak arama yapıyor yani illa title içinde varsa yoksa diye aratmak istiyorsanız olmaz. Ve sadece Body'yi aratıyor. Birazdan fonksiyonu güncelleyip deneyeceğim. Siz Title'ı olduğu gibi yazmanıza rağmen olmuyor mu? Bende de olmamıştı, güncelledim fonksiyonu şu an sorunsuz olmalı. Tekrar deneyin bakalım. Fonksiyonu bununla değiştirmeniz yeterli.

JavaScript:
async function searchPage(page, pattern = [], trueFilePath, falseFilePath) {
 const content = await page.content();
 fs.writeFileSync("Content.txt", content);
 let result = false;
 for (let i = 0; i < pattern.length; i++) {
 if (content.split(/\s+/).filter((text) => pattern.includes(text))) {
 result = true;
 break;
 }
 }
 const filePath = result ? trueFilePath : falseFilePath;
 const text = result ? "Bulundu \r\n" : "Bulunamadı \r\n";
 if (!fs.existsSync(filePath)) {
 fs.writeFileSync(filePath, text);
 } else {
 fs.open(filePath, "a", 666, function (e, id) {
 fs.write(id, text, null, "utf8", function () {
 fs.close(id);
 });
 });
 }
}

Bu da işe yaramadı başlığı <title>test</title> yazmama rağmen bulmuyor.

Ve title kodu ctrl + u yapınca en üste gözüküyor bulması zor değil aslında.
 
Son düzenleme:
Bu da işe yaramadı başlığı <title>test</title> yazmama rağmen bulmuyor.

Ve title kodu ctrl + u yapınca en üste gözüküyor bulması zor değil aslında.
JavaScript:
async function searchPage(page, pattern = [], trueFilePath, falseFilePath) {
  const content = await page.content();
  let result = false;
  for (let i = 0; i < pattern.length; i++) {
    if (content.replace(/\n/g, "").includes(pattern[i])) {
      result = true;
      break;
    }
  }
  const filePath = result ? trueFilePath : falseFilePath;
  const text = result ? "Bulundu \r\n" : "Bulunamadı \r\n";
  if (!fs.existsSync(filePath)) {
    fs.writeFileSync(filePath, text);
  } else {
    fs.open(filePath, "a", 666, function (e, id) {
      fs.write(id, text, null, "utf8", function () {
        fs.close(id);
      });
    });
  }
}
Bunu denermisiniz? "<title>Technopat Sosyal</title>" bu şekilde denedim sosyalde iken ve çalıştı.

Ve title kodu ctrl + u yapınca en üste gözüküyor bulması zor değil aslında.
Gözle görmesi zor değil zaten 😅
 

Technopat Haberler

Yeni konular

Geri
Yukarı