Çö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");
JavaScript:
const puppeteer = require("puppeteer");
const fs = require("fs");

async function searchPage(page, pattern = [], filePath) {
  const content = await page.content();
  const url = await page.evaluate(() => document.location.href);
  let result = `URL: ${url} \r\n`;
  for (let i = 0; i < pattern.length; i++) {
    if (content.replace(/\s/g, "").includes(pattern[i])) {
      result += `${pattern[i]} bulundu. \r\n`;
    } else {
      result += `${pattern[i]} bulunamadı. \r\n`;
    }
  }
  if (!fs.existsSync(filePath)) {
    fs.writeFileSync(filePath, result);
  } else {
    fs.open(filePath, "a", 666, function (e, id) {
      fs.write(id, "\r\n" + result, null, "utf8", function () {
        fs.close(id);
      });
    });
  }
}

const kelimeler = ["technopat", "sistem", "deneme34143"];
(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto("https://technopat.net/sosyal", {
    waitUntil: "domcontentloaded",
  });

  // Bu alanda sayfayla alakalı işlemleri yapabilirsiniz.
  //Daha sonra mevcut sayfayı searchPage fonksiyonuna vererek arattırıyoruz.

  await searchPage(page, kelimeler, "Output.txt");
  await browser.close();
})();
URL bazlı değilde. Sayfa bazlı aratmaya çevirdim fonksiyonu. Tek yapmanız "page" değişkenini "searchPage" fonksiyonuna vermek. Onuda ben verdim. Gösterdiğim kısımda tıklama, kaydırma vs. işlemleri yapabilirsin.

Çıktı:
Kod:
URL: https://www.technopat.net/sosyal/
technopat bulundu.
sistem bulundu.
deneme34143 bulunamadı.

URL: https://www.google.com.tr/
google bulundu.
valorant bulunamadı.
javascript bulundu.
 
Son düzenleme:
Tarayıcı ayarlarını nasıl ayarlayacağım nereye yani.

JavaScript:
 const browser = await puppeteer.launch({
 headless: false,
 args: [`--window-size=1280,768`],
 defaultViewport: {
 width:1280,
 height:768
 }
 });
 
Tarayıcı ayarlarını nasıl ayarlayacağım nereye yani.

JavaScript:
 const browser = await puppeteer.launch({
 headless: false,
 args: [`--window-size=1280,768`],
 defaultViewport: {
 width:1280,
 height:768
 }
 });
Aynen attığınız şekilde ayarlayabilirsiniz. puppeteer.launch(ayarlar);
 
const content = await page.content();
^

TypeError: Cannot read properties of undefined (reading 'content')

Fonksiyonu çağırdım sonra bu hatayı verdi.
Buradan tekrar kopyalayabilir misiniz? İlk başta hatalı yayınlamıştım. Ve searchPage fonksiyonuna "page" objesini verdiğinize emin misiniz?

Tekrar güncelledim kodu. Bidaha kopyalayın.
 
page.searchPage();
^

TypeError: page.searchPage is not a function

şimdi bu hatayı aldım
Hocam o şekilde yapmayacaksınız. searchPage fonksiyonunu çağırma işini ben yaptım. O gösterdiğim arada page'i istediğiniz şekilde manipüle edeceksiniz sadece.
await searchPage(page, kelimeler, "Output.txt")
 
Teşekkürler bir de bu var ve yoku ayrı txtlere çıkarma şansımız yok mu varsa var yazsın ama tek tek şu kelime var şu kelime yok yazmasın sadece var yok.
 
Teşekkürler bir de bu var ve yoku ayrı txtlere çıkarma şansımız yok mu varsa var yazsın ama tek tek şu kelime var şu kelime yok yazmasın sadece var yok.
Tamam fonksiyonu güncelleyeceğim. Herhangi kelimeden biri bulunursa Var.txt'ye var. Bulunmazsa Yok.txt'ye yok mu yazdıracağız?
 

Technopat Haberler

Yeni konular

Geri
Yukarı