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

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

เมื่อเข้าไปที่โฟลเลอร์ที่ปรากฎในหน้าต่างคอมมานด์ไลน์ จะพบกับไฟล์ข้อมูลจำนวนมากโดยมีรูปแบบไฟล์เป็นไฟล์ json ตามด้านล่าง
เขียนโปรแกรมเก็บข้อมูลจากเว็บไซต์ด้วยโมดูล sky ใน Python 3.4 +
คำเตือน!
ทางบล็อก python3.wannaphong.com ไม่สนับสนุนการละเมิดลิขสิทธิ์ทุกรูปแบบ ไม่แนะนำให้ทดลองเก็บข้อมูลจากบล็อกนี้และเว็บไชต์ต่าง ๆ ที่มีลิขสิทธิ์ตามกฎหมายไทยและสากล
เนื้อหาในบล็อกนี้มีลิขสิทธิ์ ห้ามนำไปใช้โดยไม่อ้างอิงและห้ามนำไปใช้ในเชิงทางการค้าทุกรูปแบบเด็ดขาด
สามารถศึกษาได้จากโค้ดตัวอย่างนี้
[python]
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') # เริ่มการเก็บข้อมูล
[/python]
ผลลัพธ์
[caption id="attachment_1426" align="aligncenter" width="666"]

[caption id="attachment_1427" align="aligncenter" width="663"]

[caption id="attachment_1428" align="aligncenter" width="663"]

[caption id="attachment_1429" align="aligncenter" width="1110"]

จะได้ไฟล์ที่ไม่มีนามสกุลจำนวนมาก แต่ข้างในไฟล์มีรูปแบบเป็นรูปแบบไฟล์ข้อมูล json โดยมีรูปแบบข้อมูลดังนี้
[python] {"title": "หัวข้อ", "body": "ข้อมูลในรูปแบบโค้ด HTML", "publish_date": "วันเวลาของหน้าเว็บ", "author": "ผู้เขียนโพสต์", "images": "ลิงค์รูปภาพ", "related": "ลิงค์ที่เกี่ยวข้อง", "summary": "", "domain": "domain"}[/python]
หากต้องการนำไฟล์ที่ได้ไปใช้ ให้ทำการดึงข้อมูลจากไฟล์ 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
ขอความกรุณาช่วยตอบแบบสอบถามด้วยนะครับ
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ
0 ความคิดเห็น:
แสดงความคิดเห็น
แสดงความคิดเห็นได้ครับ :)