Skip to content

ทำ Web Crawler ง่าย ๆ ด้วย pyspider ใน Python

สวัสดีผู้อ่านทุกท่านครับ ผู้อ่านคงเคยคัดลอกข้อความต่าง ๆ จากเว็บไซต์ใช่ไหมครับ ด้วยการคัดลอกแล้ววาง แต่อาจผู้อ่านต้องการคัดลอกข้อความหรือดึงข้อมูลต่าง ๆ หากมีเนื้อหาจำนวนหลายร้อยหน้าหรือเป็นแสนหน้า คงยากที่จะต้องได้หมดในเวลาที่จำกัด เพราะเหตุจึงมีการทำ Bot เพื่อรวบรวมข้อมูลจากเว็บไซต์ที่กำหนด เราเรียก Bot นั้นว่า "Web Crawler" ตัวอย่าง Web Crawler ที่เราเห็นได้ทั่งไปนั้นคือ Google Crawler ครับ บทความนี้จะพาผู้อ่านไปทำ Web Crawler ง่าย ๆ ด้วย pyspider ใน Python กันครับ

ไลบรารีที่ผมจะขอแนะนำในบทความนี้คือ ไลบรารี pyspider ครับ เป็นไลบรารีหนึ่งที่สามารถเป็น  Web Crawle ได้ครับ

  • Python 2&3
  • รองรับฐานข้อมูล MySQL, MongoDB, SQLite, PostgreSQL
  • มีหน้า WebUI พร้อมป้อนคำสั่งโค้ดการทำงาน, task monitor, project manager and result viewer
  • ใช้ Apache License Version 2.0

สามารถติดตั้งได้โดยใช้คำสั่ง pip ดังนี้ครับ

pip install pyspider

แล้วเรียกใช้งานได้โดยสั่ง pyspider แล้วเข้าไปยัง http://localhost:5000/ ครับ

แล้วลองเล่นโค้ดใส่ในหน้ารับโค้ดคำสั่งครับ

from pyspider.libs.base_handler import *

class Handler(BaseHandler):
    crawl_config = {
    }

    @every(minutes=24 * 60)
    def on_start(self):
        self.crawl('http://scrapy.org/', callback=self.index_page) #กำหนดเว็บไซต์ที่ต้องการไปดึงข้อมูล

    @config(age=10 * 24 * 60 * 60)
    def index_page(self, response):
        for each in response.doc('a[href^="http"]').items():
            self.crawl(each.attr.href, callback=self.detail_page)

    def detail_page(self, response):
        return {
            "url": response.url, #ดึงที่อยู่ลิงค์ภายในเว็บที่กำหนด
            "title": response.doc('title').text(), #ดึงข้อมูลภายในเว็บที่กำหนด
        }

ผลลัพธ์

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

ลองเล่น pyspider ได้ที่ demo.pyspider.org
อ่านเอกสารการใช้งาน Web Crawler ด้วย pyspider  ได้ที่ docs.pyspider.org/en/latest//
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

Published on Categories ไม่มีหมวดหมู่Tags

About wannaphong

วรรณพงษ์ ภัททิยไพบูลย์ ผู้ดูแลเว็บ wannaphong.com และผู้เขียนบทความบล็อกนี้ นักศึกษาชั้นปีที่ 1 สาขาวิทยาการคอมพิวเตอร์และสารสนเทศ คณะวิทยาศาสตร์ประยุกต์และวิศวกรรมศาสตร์ มหาวิทยาลัยขอนแก่น วิทยาเขตหนองคาย

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องที่ต้องการถูกทำเครื่องหมาย *