Laravel Türkiye Discord Kanalı Forumda kod paylaşılırken dikkat edilmesi gerekenler!Birlikte proje geliştirmek ister misiniz?

Merhaba ben laravelde keywordleri farklı siteden çekiyorum fakat onları kaydetmem gerek. Yani öyle bir kod yazmalıyım ki, sitenin urlne göre <p> tagi içerisinde olan yeni sözcükler benim databaseme kayd olmalı.

public function scrape(Request $request)
    {
           $client = new Client();

        $url = 'https://news.day.az/azerinews/1462386.html';
        $page = $client->request('GET', $url);


        $page->filter('#maincounter-wrap')->each(function ($item){

            $this->results[$item->filter('p1')->text()] = $item->filter('.p')->text();


        });
          return view('scraper',compact('data'));
    }

    ALPHADX Neyi soruyorsunuz? Nasıl kaydedeceğinizi mi yok komple bu işin nasıl yapıldığını mı?

      ALPHADX Elimden geldiğince yapmaya çalıştım. Siz artık bunu kendinize göre geliştireceksiniz:

      libxml_use_internal_errors(true);
      
      $dom = new DomDocument;
      
      $dom->loadHTMLFile("https://news.day.az/azerinews/1462386.html");
      
      $xpath = new DomXPath($dom);
      
      // Burada neyin içine bakacağınızı belirliyorsunuz. Bu aşağıdaki örneğin <html>
      // içindeki <body> içindeki tüm boş olmayan <p> elementlerine bakıyor.
      // Xpath kullanımı ile ilgili bilgi alacağınız linki en alta yazdım.
      $nodes = $xpath->query("/html/body//p[string-length(text())>0]");
      
      $words = [];
      
      // Sadace kelimeleri seç, birden fazla boşlukları kaldır ve kesme işaretine izin ver
      $pattern = '/[^\w\s\s+\']+/u';
      
      foreach($nodes as $node) {
          if($node->nodeValue) {
              $words[] = explode(' ', trim(preg_replace($pattern, "", $node->nodeValue)));
          }
      }
      
      $words = array_values(
          array_unique(
              array_filter(Arr::flatten($words))
          )
      );

      Bu $words dizisi şöyle bir şey verecek. Bununla artık istediğiniz işlemi yaparsınız:

      [
           "Prokurorluq",
           "və",
           "polis",
           "əməkdaşları",
           "tərəfindən həyata",
           "keçirilən",
           "istintaqəməliyyat",
           "tədbirləri",
           "nəticəsində",
           "paytaxtın",
           ...
         ]

      Xpath kullanımı:
      https://devhints.io/xpath

      mgsmus Fatal error: Uncaught Error: Class 'Arr' not found in C:\xampp\htdocs\bot\index.php:29 Stack trace: #0 {main} thrown in C:\xampp\htdocs\bot\index.php on line 29

        ALPHADX Arr Laravel sınıfı. Burası Laravel forumları olduğu için yapmak istediğinizi Laravel kullanmadan yapmak istiyorsanız bunu belirtmelisiniz. Şu alternatifi kullanabilirsiniz:

        function array_flatten(array $array, array $return): array
        {
            for ($x = 0; $x <= count($array); $x++) {
                if (is_array($array[$x])) {
                    $return = array_flatten($array[$x], $return);
                } else {
                    if (isset($array[$x])) {
                        $return[] = $array[$x];
                    }
                }
            }
            return $return;
        }