
คือ วิธีการในการดึงหรือสกัดเอาข้อมูลจากเว็บไซต์ต่าง ๆ ด้วยการใช้ซอฟต์แวร์ในการ scrape ข้อมูล หรือไม่ว่าจะเป็นการเขียนโปรแกรมด้วยภาษา Scripting Language อย่างภาษา Python เพื่อดึงข้อมูลเหล่านั้นมา โดยหน้าเว็บที่เราจะทำ web scraping ต้องเป็น public data อนุญาตให้เราสามารถดึงข้อมูลได้
ที่มา:https://spectrum.ieee.org/python-compiler
เริ่มต้นทำ Web Scraping ด้วย Python
โดยสเต็ปแรกต้องติดตั้งไลบรารีที่จำเป็นอยู่ 2 ตัว คือ
- Requests คืออ ไลบรารี่สำหรับเรียกใช้งาน HTTP Methods ต่าง ๆ ไม่ว่าจะเป็น GET, POST, PUT, DELETE เป็นต้น ซึ่งเป็นหลักการพื้นฐานของเว็บที่เราควรรู้
ติดตั้ง requests
pip install requests
- BeautifulSoup4 คือ ไลบรารี่ที่เราจะใช้จัดการกับ HTML Elements และ Attributes ต่าง ๆ ที่เราได้ไป scrape มาในแต่ละหน้าเว็บ ซึ่งจะจัดการส่วนต่าง ๆ ให้เราทั้งหมด
ติดตั้ง BeautifulSoup
pip install beautifulsoup4
1.import library
import requests
from bs4 import BeautifulSoup
2.กำหนด URL ของเว็บที่เราจะสกัด (Scrape) เอาข้อมูล ซึ่งในบทความนี้เราจะมาสกัดเอาชื่อบทความของเว็บ Free Code Camp สุดยอดเว็บในดวงใจของเหล่าโปรแกรมเมอร์อีกเว็บนั่นเองครับ
3. ส่ง GET request เพื่อดึงข้อมูลจากตัวแปร url ที่กำหนดไว้ก่อนหน้า
response = requests.get(url)
4.เมื่อได้ elements ทั้งหมดของหน้าเว็บเพจมาแล้ว ทำการกำหนดตัวแปร soup เพื่อเรียกใช้งานความสามารถของพระเอกของเราในวันนี้ นั่นก็คือคลาส BeautifulSoup() เพื่อสกัดเอาข้อมูลทั้งหมดออกมา เพื่อที่เราจะสามารถเข้าถึงข้อมูลใน HTML Tags แบบง่าย ๆ ได้ในขั้นตอนต่อไป
soup = BeautifulSoup(response.content, "html.parser")
5.ทดสอบแสดงผลข้อมูลที่เราต้องการจะสกัดออกมาด้วยคำสั่ง print ( )
print(soup)
6.ทำการเลือก scrape ข้อมูลที่ต้องการ ในที่นี้ก็คือชื่อบทความ โดยชื่อบทความของ Free Code Camp หรือเว็บส่วนใหญ่ทั่วไปแล้วก็จะใช้แท็ก <h2>
titles = []
for title in soup.find_all("h2"):
titles.append(title.get_text().strip())
7.โดย flow ของโค้ดด้านบน
- สร้างตัวแปร empty list ชื่อ titles
- ลูปข้อมูล พร้อมค้นหาแท็ก h2 find_all() ด้วยเมธอด
- เพิ่มข้อมูลเข้าไปใน empty list
8.หรือจะเขียนเป็นแบบ List Comprehension (ผลลัพธ์เดียวกันกับด้านบนแต่โค้ดสั้นกว่า ในบรรทัดเดียว)
titles = [title.get_text().strip() for title in soup.find_all("h2")]
9.Loop ข้อมูลออกมาแสดงผล
for title in titles:
print("-", title)


Leave a comment