Web Scraping ด้วย Python

คือ วิธีการในการดึงหรือสกัดเอาข้อมูลจากเว็บไซต์ต่าง ๆ ด้วยการใช้ซอฟต์แวร์ในการ 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)

Comments

One response to “Web Scraping ด้วย Python”

  1. Mr.Ohwen Avatar
    Mr.Ohwen

    Hello World ^^

    Like

Leave a comment