พอมีวิธีใช้งาน Bot Crawl ที่ดึงข้อมูลจากเว็ปแล้วนำมาบันทึกไว้ไหมครับ

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา พอมีวิธีใช้งาน Bot Crawl ที่ดึงข้อมูลจากเว็ปแล้วนำมาบันทึกไว้ไหมครับ

พอมีวิธีใช้งาน Bot Crawl ที่ดึงข้อมูลจากเว็ปแล้วนำมาบันทึกไว้ไหมครับ
พอดีผมอยากทำ Bot Crawl ข้อมูลให้เก็บข้อมูลเว็ปนั้นๆ อาจจะมีการตั้งค่า BOT ให้เข้าสู่ระบบแล้วดึงข้อมูลหน้าที่ต้องการได้ พอจะมีแนวทางไหมครับ


Nutpongsakorn Suwannarong 24-02-2020 16:48:01

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )

 ความคิดเห็นที่ 1
ลองดูตัว https://github.com/spatie/crawler เป็นแนวทาง 

<?php
require_once("../vendor/autoload.php");

use Spatie\Crawler\Crawler;
/*use Illuminate\Console\Command;*/

use \Spatie\Crawler\CrawlObserver;
use GuzzleHttp\Exception\RequestException;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\UriInterface;

class TitleLogger extends CrawlObserver{

    private $pages =[];


    public function crawled(
        UriInterface $url,
        ResponseInterface $response,
        ?UriInterface $foundOnUrl = null
    )
    {

        $path = $url->getPath();
        $doc = new DOMDocument();
        @$doc->loadHTML($response->getBody());
        $title = $doc->getElementsByTagName("title")[0]->nodeValue;

        $this->pages[] = [
            'path'=>urldecode($path),
            'title'=> urldecode($title)
        ];
    }

    public function crawlFailed(
        UriInterface $url,
        RequestException $requestException,
        ?UriInterface $foundOnUrl = null
    )
    {
        echo 'failed';
    }

    public function finishedCrawling()
    {
        echo 'crawled ' . count($this->pages) . ' urls' . PHP_EOL;
        foreach ($this->pages as $page){
            echo sprintf("Url  path: %s Page title: %s%s", $page['path'], $page['title'], PHP_EOL);
        }
    }

}

Crawler::create()
		->setCrawlObserver(new TitleLogger())
		->setMaximumCrawlCount(2)
		->ignoreRobots() //github doesnt like scrapers...
		->startCrawling('https://github.com/spatie/crawler');
?>


ninenik 24-02-2020






เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ