การขูดเว็บด้วยซีลีเนียม: คู่มือฉบับสมบูรณ์

การขูดเว็บด้วยซีลีเนียม: คู่มือฉบับสมบูรณ์

โหนดต้นทาง: 2538197

ต้องการดึงข้อมูลจากหน้าเว็บหรือไม่?

ตรงไปที่ Nanonets มีดโกนเว็บไซต์, เพิ่ม URL แล้วคลิก “ขูด” และดาวน์โหลดข้อความหน้าเว็บเป็นไฟล์ทันที ทดลองใช้ฟรีตอนนี้

เครื่องมือขูดเว็บไซต์ของ Nanonets


Selenium Web Scraping คืออะไร?

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

ซีลีเนียมเป็นเครื่องมือพัฒนาเว็บแบบโอเพ่นซอร์สที่ใช้เพื่อทำให้ฟังก์ชันการท่องเว็บเป็นแบบอัตโนมัติ ได้รับการพัฒนาในปี 2004 และส่วนใหญ่ใช้เพื่อทดสอบเว็บไซต์และแอปโดยอัตโนมัติในเบราว์เซอร์ต่างๆ แต่ตอนนี้ได้กลายเป็นเครื่องมือยอดนิยมสำหรับการขูดเว็บ ซีลีเนียมสามารถใช้ได้กับภาษาการเขียนโปรแกรมหลายภาษา รวมถึง Python, Java และ C# มี API ที่มีประสิทธิภาพสำหรับการโต้ตอบหน้าเว็บ รวมถึงการนำทาง การคลิก การพิมพ์ และการเลื่อน

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


เหตุใดจึงต้องใช้ Selenium และ Python ในการขูดเว็บ

Python เป็นภาษาโปรแกรมยอดนิยมสำหรับการสแครปเว็บ เนื่องจากมีไลบรารีและเฟรมเวิร์กมากมายที่ทำให้ดึงข้อมูลจากเว็บไซต์ได้ง่าย

การใช้ Python และ Selenium สำหรับการขูดเว็บมีข้อดีหลายประการเหนือเทคนิคการขูดเว็บอื่นๆ:

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

ข้อกำหนดเบื้องต้นสำหรับการขูดเว็บด้วยซีลีเนียม:

ติดตั้ง Python 3 บนระบบของคุณแล้ว

ติดตั้งไลบรารีซีลีเนียมแล้ว คุณสามารถติดตั้งโดยใช้ pip ด้วยคำสั่งต่อไปนี้:

pip install Selenium

ติดตั้ง WebDriver แล้ว

WebDriver เป็นไฟล์ปฏิบัติการแยกต่างหากที่ Selenium ใช้เพื่อควบคุมเบราว์เซอร์ นี่คือลิงค์ที่ฉันพบเพื่อดาวน์โหลด WebDriver สำหรับเบราว์เซอร์ยอดนิยม:

อีกทางหนึ่ง และนี่คือวิธีที่ง่ายที่สุด คุณยังสามารถติดตั้ง WebDriver โดยใช้ตัวจัดการแพ็คเกจ เช่น ตัวจัดการไดรเวอร์เว็บ สิ่งนี้จะดาวน์โหลดและติดตั้ง WebDriver ที่เหมาะสมสำหรับคุณโดยอัตโนมัติ ในการติดตั้ง web driver-manager คุณสามารถใช้คำสั่งต่อไปนี้:

pip install webdriver-manager

แยกข้อความทั้งหมดออกจากหน้าเว็บในไม่กี่วินาที!

ตรงไปที่ Nanonets มีดโกนเว็บไซต์, เพิ่ม URL แล้วคลิก “ขูด” และดาวน์โหลดข้อความหน้าเว็บเป็นไฟล์ทันที ทดลองใช้ฟรีตอนนี้

เครื่องมือขูดเว็บไซต์ของ Nanonets


คำแนะนำทีละขั้นตอนสำหรับการขูดเว็บซีลีเนียม

ขั้นตอนที่ 1: ติดตั้งและนำเข้า

ก่อนที่เราจะเริ่มต้น เราได้ตรวจสอบให้แน่ใจว่าเราได้ติดตั้ง Selenium และไดรเวอร์ที่เหมาะสมแล้ว เราจะใช้ไดรเวอร์ Edge ในตัวอย่างนี้

from selenium import webdriver
from Selenium.webdriver.common.keys import Keys
from Selenium.webdriver.common.by import By

ขั้นตอนที่ 2: ติดตั้งและเข้าถึง WebDriver

เราสามารถสร้างอินสแตนซ์ใหม่ของไดรเวอร์ Edge ได้โดยใช้รหัสต่อไปนี้:

driver = webdriver.Edge()

ขั้นตอนที่ 3: เข้าถึงเว็บไซต์ผ่าน Python

ต่อไป เราต้องเข้าถึงเว็บไซต์ของเครื่องมือค้นหา ในกรณีนี้ เราจะใช้ Bing

driver.get("https://www.bing.com")

ขั้นตอนที่ 4: ค้นหาข้อมูลเฉพาะที่คุณกำลังคัดลอก

เราต้องการแยกจำนวนผลการค้นหาสำหรับชื่อใดชื่อหนึ่ง เราสามารถทำได้โดยค้นหาองค์ประกอบ HTML ที่มีจำนวนผลการค้นหา

results = driver.find_elements(By.XPATH, "//*[@id='b_tween']/span")

ขั้นตอนที่ 5: ทำมันด้วยกัน

ตอนนี้เรามีชิ้นส่วนทั้งหมดแล้ว เราสามารถรวมเข้าด้วยกันเพื่อแยกผลการค้นหาสำหรับชื่อใดชื่อหนึ่ง

try:
search_box = driver.find_element(By.NAME, "q")
search_box.clear()
search_box.send_keys("John Doe") # enter your name in the search box
search_box.submit() # submit the search
results = driver.find_elements(By.XPATH, "//*[@id='b_tween']/span")
for result in results:
text = result.text.split()[1] # extract the number of results
print(text)
# save it to a file
with open("results.txt", "w") as f:
f.write(text)
except Exception as e:
print(f"An error occurred: {e}")

ขั้นตอนที่ 6: จัดเก็บข้อมูล

ในที่สุด เราสามารถจัดเก็บข้อมูลที่แยกออกมาในไฟล์ข้อความ

ด้วย open("results.txt", "w") เป็น f:

f.write(text)

การใช้พร็อกซีกับ Selenium Wire

Selenium Wire เป็นไลบรารีที่ขยายการทำงานของ Selenium โดยอนุญาตให้คุณตรวจสอบและแก้ไขคำขอ HTTP และการตอบกลับ ตัวอย่างเช่น นอกจากนี้ยังสามารถใช้เพื่อกำหนดค่าพร็อกซีสำหรับ Selenium WebDriver ของคุณได้อย่างง่ายดาย

ติดตั้งลวดซีลีเนียม

pip install selenium-wire

ตั้งค่าพร็อกซี

from selenium import webdriver
from Selenium.webdriver.chrome.options import Options
from seleniumwire import webdriver as wiredriver
PROXY_HOST = 'your.proxy.host'
PROXY_PORT = 'your_proxy_port'
chrome_options = Options()
chrome_options.add_argument('--proxy-server=http://{}:{}'.format(PROXY_HOST, PROXY_PORT))
driver = wiredriver.Chrome(options=chrome_options)

ใช้ Selenium Wire เพื่อตรวจสอบและแก้ไขคำขอ

for request in driver.requests:
if request.response:
print(request.url, request.response.status_code, request.response.headers['Content-Type'])

ในโค้ดด้านบน เราวนซ้ำคำขอทั้งหมดที่สร้างโดย WebDriver ระหว่างเซสชันการขูดเว็บ สำหรับแต่ละคำขอ เราจะตรวจสอบว่าได้รับการตอบกลับหรือไม่ และพิมพ์ URL รหัสสถานะ และประเภทเนื้อหาของการตอบกลับ

การใช้ Selenium เพื่อแยกชื่อทั้งหมดออกจากหน้าเว็บ

ต่อไปนี้คือตัวอย่างโค้ด Python ที่ใช้ Selenium เพื่อคัดลอกชื่อเรื่องของเว็บเพจทั้งหมด:

from selenium import webdriver
# Initialize the webdriver
driver = webdriver.Chrome()
# Navigate to the webpage
driver.get("https://www.example.com")
# Find all the title elements on the page
title_elements = driver.find_elements_by_tag_name("title")
# Extract the text from each title element
titles = [title.text for title in title_elements]
# Print the list of titles
print(titles)
# Close the webdriver
driver.quit()

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

จากนั้นเราจะใช้ความเข้าใจในรายการเพื่อแยกข้อความจากองค์ประกอบชื่อเรื่องแต่ละรายการ และเก็บรายการชื่อเรื่องผลลัพธ์ไว้ในตัวแปรชื่อเรื่อง สุดท้าย เราพิมพ์รายการชื่อเรื่องและปิดอินสแตนซ์ไดรเวอร์เว็บ

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

pip install selenium chromedriver-binary

ตรวจสอบให้แน่ใจว่าได้อัปเดต URL ในไดรเวอร์แล้ว รับวิธีการชี้ไปที่หน้าเว็บที่คุณต้องการขูด

สรุป

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

หรือคุณสามารถใช้เครื่องมือที่ไม่มีโค้ดเช่น Nanonets เครื่องมือขูดเว็บไซต์ เพื่อแยกองค์ประกอบข้อความทั้งหมดออกจาก HTML ได้อย่างง่ายดาย ใช้งานได้ฟรีอย่างสมบูรณ์


แยกข้อความจากหน้าเว็บใดก็ได้ในคลิกเดียว ตรงไปที่ Nanonets มีดโกนเว็บไซต์, เพิ่ม URL แล้วคลิก “ขูด” และดาวน์โหลดข้อความหน้าเว็บเป็นไฟล์ทันที ทดลองใช้ฟรีตอนนี้

เครื่องมือขูดเว็บไซต์ของ Nanonets


คำถามที่พบบ่อย:

ซีลีเนียมดีกว่า BeautifulSoup หรือไม่?

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

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

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

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

ฉันควรใช้ซีลีเนียมหรือ Scrapy?

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

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

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

ภาษาใดดีที่สุดสำหรับการขูดเว็บ

Python เป็นหนึ่งในภาษายอดนิยมสำหรับการขูดเว็บเนื่องจากใช้งานง่าย มีไลบรารีให้เลือกมากมาย และเฟรมเวิร์กการขูดที่ทรงพลัง เช่น Scrapy, คำขอ, beautifulSoup และ Selenium Python ยังเรียนรู้และใช้งานได้ง่าย ทำให้เป็นตัวเลือกที่ยอดเยี่ยมสำหรับผู้เริ่มต้น

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

นอกจากนี้ยังสามารถใช้ภาษาอื่นๆ เช่น R, JavaScript และ PHP โดยขึ้นอยู่กับข้อกำหนดเฉพาะของโครงการขูดเว็บของคุณ

ทำไมซีลีเนียมจึงมีความสำคัญในการขูดเว็บ

ซีลีเนียมเป็นเครื่องมือสำคัญในการขูดเว็บด้วยเหตุผลหลายประการ:

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

คุณสามารถใช้ Selenium และ BeautifulSoup ร่วมกันได้หรือไม่?

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

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

ประทับเวลา:

เพิ่มเติมจาก AI และการเรียนรู้ของเครื่อง