การสร้าง Web Scraper ด้วย BeautifulSoup – คู่มือฉบับสมบูรณ์

เผยแพร่แล้ว: 2024-03-19
สารบัญ แสดง
รู้เบื้องต้นเกี่ยวกับ Web Scraping ด้วย BeautifulSoup
ข้อกำหนดเบื้องต้น
การตั้งค่าสภาพแวดล้อมของคุณ
การสร้าง Web Scraper เครื่องแรกของคุณ
ขั้นตอนที่ 1: การตั้งค่าสภาพแวดล้อม Python ของคุณ
ขั้นตอนที่ 2: ดึงข้อมูลเว็บเพจ
ขั้นตอนที่ 3: แยกวิเคราะห์เนื้อหา HTML ด้วย BeautifulSoup
ขั้นตอนที่ 4: แยกข้อมูลจาก HTML
ขั้นตอนที่ 5: ก้าวต่อไป
แนวทางปฏิบัติที่ดีที่สุดและข้อควรพิจารณา
บทสรุป

สำหรับผู้ที่ต้องการควบคุมพลังของข้อมูลเว็บ BeautifulSoup มีความโดดเด่นในฐานะเครื่องมือที่ทรงพลังและใช้งานง่าย ไลบรารี Python นี้ออกแบบมาเพื่อวัตถุประสงค์ในการขูดเว็บ ทำให้คุณสามารถดึงข้อมูลเฉพาะจากหน้าเว็บได้อย่างง่ายดาย คู่มือนี้จะแนะนำคุณตลอดขั้นตอนการสร้าง web scraper โดยใช้ BeautifulSoup, ดำเนินการขั้นตอนการขูดเว็บด้วย beautifulsoup ตั้งแต่การตั้งค่าสภาพแวดล้อมไปจนถึงการแยกวิเคราะห์และแยกข้อมูลที่คุณต้องการ

รู้เบื้องต้นเกี่ยวกับ Web Scraping ด้วย BeautifulSoup

การขูดเว็บเป็นกระบวนการรวบรวมข้อมูลจากเวิลด์ไวด์เว็บโดยทางโปรแกรม เป็นเทคนิคอันทรงคุณค่าที่ใช้ในการขุดข้อมูล การรวบรวมข้อมูล และงานระบบอัตโนมัติ BeautifulSoup ซึ่งจับคู่กับไลบรารีคำขอของ Python มอบแนวทางที่ตรงไปตรงมาในการขูดเว็บ ทำให้โปรแกรมเมอร์ทุกระดับสามารถเข้าถึงได้ Web Scrape ด้วย BeautifulSoup เกี่ยวข้องกับข้อกำหนดเบื้องต้นหลายประการ

ข้อกำหนดเบื้องต้น

ก่อนที่จะเริ่มต้นใช้งาน BeautifulSoup ตรวจสอบให้แน่ใจว่าคุณได้ครอบคลุมข้อกำหนดเบื้องต้นต่อไปนี้:

  • ความรู้พื้นฐานเกี่ยวกับการเขียนโปรแกรม Python
  • Python ติดตั้งอยู่ในระบบของคุณ
  • ความคุ้นเคยกับ HTML และโครงสร้างของหน้าเว็บ
การตั้งค่าสภาพแวดล้อมของคุณ
  1. ติดตั้ง Python : ตรวจสอบให้แน่ใจว่าติดตั้ง Python บนระบบของคุณแล้ว แนะนำให้ใช้ Python 3 สำหรับคุณสมบัติและการรองรับที่ได้รับการปรับปรุง
  2. ติดตั้ง BeautifulSoup และ Requests : เปิดบรรทัดคำสั่งหรือเทอร์มินัลของคุณแล้วติดตั้งไลบรารีที่จำเป็นโดยใช้ pip ซึ่งเป็นตัวติดตั้งแพ็คเกจของ Python รันคำสั่งต่อไปนี้:

pip ติดตั้ง beautifulsoup4

คำขอติดตั้ง pip

การสร้าง Web Scraper เครื่องแรกของคุณ

การสร้างเว็บสแครปเปอร์ครั้งแรกของคุณด้วย BeautifulSoup ถือเป็นก้าวที่น่าตื่นเต้นเข้าสู่โลกแห่งการดึงข้อมูลจากเว็บ คู่มือนี้จะแนะนำคุณเกี่ยวกับพื้นฐานของการตั้งค่าสแครปเปอร์อย่างง่ายโดยใช้ Python และ BeautifulSoup เพื่อดึงและแยกวิเคราะห์เนื้อหาเว็บอย่างมีประสิทธิภาพ เราจะคัดลอกคำพูดจาก “http://quotes.toscrape.com” ซึ่งเป็นเว็บไซต์ที่ออกแบบมาเพื่อฝึกทักษะการขูดเว็บ

ขั้นตอนที่ 1: การตั้งค่าสภาพแวดล้อม Python ของคุณ

ตรวจสอบให้แน่ใจว่าติดตั้ง Python บนคอมพิวเตอร์ของคุณแล้ว คุณจะต้องมีไลบรารีหลักสองไลบรารี: คำขอสำหรับสร้างคำขอ HTTP เพื่อรับหน้าเว็บ และ beautifulsoup4 สำหรับการแยกวิเคราะห์เนื้อหา HTML

หากคุณยังไม่ได้ติดตั้งไลบรารีเหล่านี้ คุณสามารถทำได้โดยใช้ pip ซึ่งเป็นโปรแกรมติดตั้งแพ็คเกจของ Python เปิดเทอร์มินัลหรือพรอมต์คำสั่งของคุณแล้วดำเนินการคำสั่งต่อไปนี้:

pip ติดตั้ง beautifulsoup4

คำขอติดตั้ง pip

ขั้นตอนที่ 2: ดึงข้อมูลเว็บเพจ

หากต้องการคัดลอกเว็บด้วย BeautifulSoup ให้เริ่มต้นด้วยการเขียนสคริปต์ Python เพื่อดึงเนื้อหา HTML ของหน้าเว็บที่คุณต้องการคัดลอก ในกรณีนี้ เราจะดึงคำพูดจาก “http://quotes.toscrape.com”

คำขอนำเข้า

# URL ของเว็บไซต์ที่คุณต้องการขูด

url = 'http://quotes.toscrape.com'

# ใช้ไลบรารีคำขอเพื่อรับเนื้อหาของเว็บไซต์

การตอบสนอง = request.get (url)

#รับรองว่าคำขอสำเร็จ

ถ้า response.status_code == 200:

พิมพ์ (“ดึงข้อมูลหน้าเว็บสำเร็จ!”)

อื่น:

print("ไม่สามารถดึงข้อมูลหน้าเว็บได้")

ขั้นตอนที่ 3: แยกวิเคราะห์เนื้อหา HTML ด้วย BeautifulSoup

เมื่อคุณดึงข้อมูลหน้าเว็บแล้ว ขั้นตอนต่อไปคือการแยกวิเคราะห์เนื้อหา HTML BeautifulSoup ทำให้งานนี้ตรงไปตรงมา สร้างออบเจ็กต์ BeautifulSoup และใช้เพื่อแยกวิเคราะห์ข้อความตอบกลับ

จาก bs4 นำเข้า BeautifulSoup

# สร้างวัตถุ BeautifulSoup และระบุ parser

ซุป = BeautifulSoup (response.text, 'html.parser')

# พิมพ์ HTML ที่สวยงามเพื่อดูโครงสร้าง

พิมพ์(soup.prettify())

ขั้นตอนที่ 4: แยกข้อมูลจาก HTML

เมื่อคุณแยกวิเคราะห์ HTML แล้ว คุณสามารถเริ่มแยกข้อมูลที่คุณสนใจได้ เรามาแยกเครื่องหมายคำพูดทั้งหมดออกจากหน้ากัน

# ค้นหาองค์ประกอบ <span> ทั้งหมดที่มีคลาส 'ข้อความ' และวนซ้ำองค์ประกอบเหล่านั้น

คำพูด =ซุป.find_all('span', class_='text')

สำหรับคำพูดในเครื่องหมายคำพูด:

# พิมพ์เนื้อหาข้อความของแต่ละ <span>

พิมพ์ (quote.text)

ตัวอย่างนี้จะค้นหาองค์ประกอบ <span> ทั้งหมดที่มีข้อความคลาสซึ่งมีเครื่องหมายคำพูดบนหน้า และพิมพ์เนื้อหาข้อความ

ขั้นตอนที่ 5: ก้าวต่อไป

คุณยังสามารถดึงข้อมูลอื่น ๆ เช่นผู้เขียนคำพูด:

# ค้นหาองค์ประกอบ <small> ทั้งหมดด้วยคลาส 'author'

ผู้เขียน =ซุป.find_all('เล็ก', class_='ผู้เขียน')

สำหรับผู้เขียนในผู้เขียน:

# พิมพ์เนื้อหาข้อความของ <small> แต่ละรายการซึ่งมีชื่อผู้เขียน

พิมพ์ (ผู้เขียนข้อความ)

การดำเนินการนี้จะพิมพ์ชื่อของผู้แต่งแต่ละคนที่สอดคล้องกับคำพูดที่คุณดึงออกมา

แนวทางปฏิบัติที่ดีที่สุดและข้อควรพิจารณา

  • เคารพ Robots.txt : ตรวจสอบไฟล์ robots.txt ของเว็บไซต์เสมอ (เช่น http://quotes.toscrape.com/robots.txt) ก่อนที่จะทำการคัดลอก มันบอกคุณถึงนโยบายการขูดของเว็บไซต์
  • จัดการข้อยกเว้น : ตรวจสอบให้แน่ใจว่าโค้ดของคุณจัดการข้อผิดพลาดของเครือข่ายหรือการตอบกลับที่ไม่ถูกต้องได้อย่างงดงาม
  • การจำกัดอัตรา : คำนึงถึงจำนวนคำขอที่คุณส่งไปยังเว็บไซต์เพื่อหลีกเลี่ยงการถูกบล็อก
  • ข้อพิจารณาทางกฎหมาย : ตระหนักถึงผลกระทบทางกฎหมายของการขูดเว็บ และให้แน่ใจว่ากิจกรรมของคุณเป็นไปตามกฎหมายที่เกี่ยวข้องและข้อกำหนดในการให้บริการของเว็บไซต์

บทสรุป

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