Skip to content

ทำ Scraping และ Web Crawler ด้วยโมดูล sky

สวัสดีผู้อ่านทุกท่านครับ บทความนี้ผมจะพาผู้อ่านไปทำ Scraping และ Web Crawler ด้วยโมดูล sky ในภาษาไพทอน 3.4 ขึ้นไปกันครับ

ข้อแนะนำ
แนะนำให้ใช้โมดูลนี้ในงานวิจัยและการศึกษาที่ต้องการนำข้อมูลไปใช้งาน

โมดูล sky เป็นโมดูลหนึ่งในภาษาไพทอน สามารถทำ Scraping และ Web Crawler ได้ โดยอาศัยไลบรารี asyncio ในทำงานทำให้รองรับเฉพาะ Python 3.4 ขึ้นไปเท่านั้นและสามารถเก็บข้อมูลได้อย่างรวดเร็ว ข้อมูลที่เก็บมาได้จะถูกบันทึกอยู่ในรูปแบบไฟล์ json
ใช้ BSD License

สามารถติดตั้งได้โดยใช้คำสั่ง pip (ตรวจสอบการติดตั้งคอมไพเลอร์กับไพทอนให้เรียบร้อยก่อนทำการติดตั้ง) :

pip3 install -U sky

ลองใช้งาน sky ได้ด้วยคำสั่ง

sky view

แล้วเข้าไปที่ http://localhost:7900/ จะพบกับหน้า sky view ซึ่งเป็นหน้าสำหรับทำการ scraping ผ่าน GUI

ทำ Scraping และ Web Crawling ด้วยโมดูล skyกรอกลิงค์เว็บไซต์ที่ต้องการและกำหนดค่าข้อมูลต่าง ๆ ลงไป แล้วกดปุ่ม [>>>]

ระบบจะทำการเก็บข้อมูลในรูปแบบไฟล์ json ในหน้าต่างคอมมาไลน์ จะปรากฏที่อยู่โฟลเลอร์ที่ระบบเก็บข้อมูลไว้

เมื่อเข้าไปที่โฟลเลอร์ที่ปรากฎในหน้าต่างคอมมาไลน์ จะพบกับไฟล์ข้อมูลจำนวนมากโดยมีรูปแบบไฟล์เป็นไฟล์ json ตามด้านล่าง

เขียนโปรแกรมเก็บข้อมูลจากเว็บไซต์ด้วยโมดูล sky ใน Python 3.4 +

คำเตือน!
ทางบล็อก python3.wannaphong.com ไม่สนับสนุนการละเมิดลิขสิทธิ์ทุกรูปแบบ ไม่แนะนำให้ทดลองเก็บข้อมูลจากบล็อกนี้และเว็บไชต์ต่าง ๆ ที่มีลิขสิทธิ์ตามกฎหมายไทยและสากล
เนื้อหาในบล็อกนี้มีลิขสิทธิ์ ห้ามนำไปใช้โดยไม่อ้างอิงและห้ามนำไปใช้ในเชิงทางการค้าทุกรูปแบบเด็ดขาด

สามารถศึกษาได้จากโค้ดตัวอย่างนี้

from sky.crawler_services import CrawlFileService
from sky.crawler_plugins import CrawlFilePluginNews
PROJECT_NAME = 'python3' #ชื่อโครงการเก็บข้อมูล
storage_object = {'path' : 'C:\websave'} # ตั้งค่าโฟลเดอร์เก็บข้อมูลในโค้ดนี้ตั้งค่าให้เก็บลงใน C:\websave
crawler_service = CrawlFileService(PROJECT_NAME, storage_object, CrawlFilePluginNews)
from sky.configs import DEFAULT_CRAWL_CONFIG
default = crawler_service.get_crawl_plugin('default') # โหลด plugin ที่ใช้ในการ crawl เข้ามา
default.save_config(DEFAULT_CRAWL_CONFIG)
py_config = {
    'seed_urls' : ['https://python3.wannaphong.com/2014'], # ลิงค์เริ่มต้นการเก็บข้อมูล
    'crawl_required_regexps' : [], # กำหนดคีย์การเก็บ ในนี้ไม่มีจึงไม่ได้กำหนด
    'index_required_regexps' : ['2014/'], # ให้เก็บเฉพาะลิงค์ที่อยู่ใน 2014/
    'max_saved_responses' : 100, # จำกัดจำนวน 100 เว็บเพจ
}
py = crawler_service.get_crawl_plugin('python3.wannaphong.com')
py.save_config(py_config) # เก็บการตั้งค่า
crawler_service.run('python3.wannaphong.com') # เริ่มการเก็บข้อมูล

ผลลัพธ์

กำหลังทำการเก็บข้อมูลจากค่าที่กำหนดไว้
กำลังทำการเก็บข้อมูลจากค่าที่กำหนดไว้
รายงานผลการเก็บข้อมูล
รายงานผลการเก็บข้อมูล
เข้าไปยังโฟลเลอร์ C:\websave ตามที่กำหนดไว้จะบพบสามโฟลเลอร์นี้
เข้าไปยังโฟลเลอร์ C:\websave ตามที่กำหนดไว้จะกับพบสามโฟลเลอร์นี้
เทื่อเข้ายังโฟลเลอร์ crawler-documents ในนี้คือ python3-crawler-documents ตามชื่อที่กำหนดไว้ จะพบไฟล์จำนวนมาก ภายในมีรูปแบบ json
เทื่อเข้ายังโฟลเลอร์ crawler-documents ในนี้คือ python3-crawler-documents ตามชื่อที่กำหนดไว้ จะพบไฟล์จำนวนมาก ภายในมีรูปแบบ json

จะได้ไฟล์ที่ไม่มีนามสกุลจำนวนมาก แต่ข้างในไฟล์มีรูปแบบเป็นรูปแบบไฟล์ข้อมูล json โดยมีรูปแบบข้อมูลดังนี้

 {"title": "หัวข้อ", "body": "ข้อมูลในรูปแบบโค้ด HTML", "publish_date": "วันเวลาของหน้าเว็บ", "author": "ผู้เขียนโพสต์",  "images": "ลิงค์รูปภาพ", "related": "ลิงค์ที่เกี่ยวข้อง", "summary": "", "domain": "domain"}

หากต้องการนำไฟล์ที่ได้ไปใช้ ให้ทำการดึงข้อมูลจากไฟล์ json นี้ไปแปลงเป็นข้อมูลตามที่ต้องการ (เป็นโจทย์ที่ผู้อ่านต้องนำไปคิดเพื่อประยุกต์ใช้งานเองครับ)

ข้อมูลที่ได้มา หากเป็นภาษาอื่นที่ไม่ใช่ภาษาอังกฤษ ข้อมูลภาษาไทยถูกเข้ารหัสเป็น Unicode ต้องนำไปแปลงเป็น UTF 8 ก่อนจึงนำไปใช้งานได้ https://r12a.github.io/apps/conversion/

เข้าไปร่วมกันพัฒนาโมดูล sky ได้ที่ https://github.com/kootenpv/sky/
อ่านเอกสาร sky เพิ่มเติมได้ที่ https://github.com/kootenpv/sky/blob/master/sky/README.md

ขอความกรุณาช่วยตอบแบบสอบถามด้วยนะครับ

ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

ใส่ความเห็น

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