Selenium in python 1

Selenium เพียงอย่างเดียวเหมาะอย่างยิ่งสำหรับการทำงานอัตโนมัติบนเว็บ แต่เมื่อใช้ร่วมกับ proxy จะช่วยรักษาความเป็นส่วนตัว ทำให้การเชื่อมต่อเสถียร และช่วยให้เข้าถึงเนื้อหาได้อย่างต่อเนื่อง กล่าวโดยสรุป Selenium คือเครื่องมือโอเพนซอร์สที่พัฒนาโดย Jason Huggins ใช้เพื่อทำงานอัตโนมัติหรือทดสอบเว็บแอปพลิเคชัน โดยมีโมดูลต่างๆ เช่น Selenium IDE, Grid, Standalone Server และ WebDriver

คู่มือนี้จะแนะนำขั้นตอนสำคัญในการตั้งค่า Selenium ร่วมกับ proxy ใน Python สำหรับงาน web scraping

เริ่มต้นใช้งาน

ก่อนอื่น ตรวจสอบให้แน่ใจว่าได้ติดตั้ง Python และ pip (Python Package Manager) แล้ว หากยังไม่ได้ติดตั้ง ให้ดาวน์โหลด Python จากเว็บไซต์ทางการ เปิดไฟล์ .pkg ที่ดาวน์โหลดมา แล้วทำตามคำแนะนำ ต่อไปนี้คือขั้นตอนพื้นฐาน:

1. เปิด Terminal หรือ Command Prompt หากใช้ Mac ให้คลิกไอคอน Launchpad ใน Dock พิมพ์ Terminal ในช่องค้นหา แล้วคลิก Terminal หากใช้ Windows ให้พิมพ์ cmd ในหน้าต่าง Run ทางลัดนี้จะเปิด Terminal ของ Command Prompt หรือ PowerShell 

2. พิมพ์คำสั่งต่อไปนี้ใน Terminal: 


python --version
      
        

      

หากเวอร์ชันของคุณคือ Python 3 ให้เพิ่ม 3 ต่อท้าย python ซึ่งอาจใช้กับคำสั่งอื่นได้เช่นกัน:


python3 --version
      
        

      

pip มักติดตั้งโดยอัตโนมัติมาพร้อมกับ Python 3.4+ อย่างไรก็ตาม ควรตรวจสอบว่า pip ได้รับการติดตั้งแล้ว โดยพิมพ์คำสั่ง:


pip --version
      
        

      


pip3 --version
      
        

      

3. ใช้ pip เพื่อติดตั้งแพ็กเกจ Selenium:


pip install selenium
      
        

      

หากใช้ Python 3 ให้ลองใช้ pip3 เพื่อให้แน่ใจว่าติดตั้งสำหรับ Python 3 แล้ว: 


pip3 install selenium
      
        

      

4. ตรวจสอบว่าการติดตั้งเสร็จสมบูรณ์แล้ว 

หลังติดตั้งแล้ว คุณสามารถตรวจสอบว่า Selenium ได้รับการติดตั้งเรียบร้อยด้วยการรัน:


pip show selenium
      
        

      

การใช้ Web Driver สำหรับ Selenium

Selenium ต้องใช้ web driver เพื่อโต้ตอบกับเบราว์เซอร์อย่าง Chrome, Firefox และอื่นๆ คุณต้องดาวน์โหลด driver ที่เหมาะสม และตรวจสอบให้แน่ใจว่าสามารถเรียกใช้ได้จาก PATH ของระบบ เราจะใช้ Chrome ซึ่งเป็นเบราว์เซอร์ที่นิยมสำหรับโปรเจกต์ระบบอัตโนมัติส่วนใหญ่

1. ไปที่หน้าดาวน์โหลด ChromeDriver อย่างเป็นทางการ:

https://developer.chrome.com/docs/chromedriver/downloads 

2. ค้นหาลิงก์ที่ตรงกับเวอร์ชัน Chrome ของคุณ แล้วดาวน์โหลด ChromeDriver สำหรับ macOS 

ไฟล์ที่ดาวน์โหลดจะอยู่ในรูปแบบ zip. เพียงดับเบิลคลิกเพื่อแตกไฟล์ แล้วคุณจะได้ไฟล์ chromedriver ที่เรียกใช้งานได้

เพื่อให้เรียกใช้ได้สะดวก ควรย้ายไฟล์ chromedriver ไปยังไดเรกทอรีที่อยู่ใน PATH ของระบบ ไดเรกทอรีที่ใช้บ่อยได้แก่ /usr/local/bin หรือ /usr/bin ใช้คำสั่งนี้:


sudo mv ~/Downloads/chromedriver /usr/local/bin/
      
        

      

***หากพบข้อผิดพลาด “No such file or directory” โดยทั่วไปหมายความว่าเส้นทางไฟล์ในคำสั่งไม่ถูกต้อง หรือไม่มีไฟล์อยู่ในตำแหน่งที่ระบุ ตรวจสอบอีกครั้งว่าคุณอยู่ในไดเรกทอรีที่มีไฟล์ chromedriver อยู่ และชื่อไฟล์ไม่มีนามสกุลหรือการพิมพ์ผิด 

เมื่อใช้คำสั่ง mv ร่วมกับ sudo เพื่อย้ายไฟล์ไปยังไดเรกทอรีอย่าง /usr/local/bin macOS จะขอให้ป้อนรหัสผ่าน ซึ่งคือรหัสผ่านบัญชีผู้ใช้ของคุณ พิมพ์รหัสผ่านแล้วกด Enter โปรดทราบว่ารหัสผ่านจะไม่แสดงบนหน้าจอขณะพิมพ์ โดยจะไม่มีอักขระหรือสัญลักษณ์ปรากฏ

หากต้องการตรวจสอบว่า ChromeDriver ติดตั้งถูกต้องหรือไม่ ให้พิมพ์คำสั่งต่อไปนี้ใน Terminal:


chromedriver --version/
      
        

      

สร้างสคริปต์ Python เบื้องต้น

จากนั้นดาวน์โหลดโปรแกรมแก้ไขข้อความใดก็ได้ เช่น VS Code หรือใช้ IDE เพื่อสร้างไฟล์ใหม่ชื่อ selenium_test.py. 

ในการสร้างสคริปต์ Python เบื้องต้น ต้องติดตั้งโมดูล webdriver-manager  

  • เราสามารถติดตั้งแพ็กเกจด้วย pip ให้รันคำสั่งต่อไปนี้ใน Terminal:

pip install webdriver-manager/
      
        

      


pip install selenium webdriver-manager/
      
        

      

หลังรันคำสั่งข้างต้น สคริปต์ควรทำงานตามที่คาดไว้:


# pip install selenium webdriver-manager
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.options import Options

# set Chrome options to run in headless mode
options = Options()
options.add_argument("--headless=new")

# initialize Chrome driver
driver = webdriver.Chrome(
    service=Service(ChromeDriverManager().install()), 
    options=options
)

# navigate to the target webpage
driver.get("https://httpbin.io/ip")

# print the HTML of the target webpage
print(driver.page_source)

# release the resources and close the browser
driver.quit()/


























คุณจะเห็นผลลัพธ์นี้:

ตั้งค่า proxy ฟรีใน Selenium

ในส่วนนี้ คุณจะได้เรียนรู้วิธีตั้งค่า Selenium proxy ด้วย Python และทดลองใช้ proxy ฟรี ไปที่เว็บไซต์ https://free-proxy-list.net/ แล้วเลือก proxy ฟรีสำหรับการทดสอบ ในสคริปต์ คุณต้องกำหนดที่อยู่และพอร์ตของ proxy ตัวอย่างนี้จะเลือก proxy ฟรีดังต่อไปนี้:


from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By

# define the proxy address and port
proxy = "194.5.25.34:443"

# set Chrome options to run in headless mode using a proxy
options = Options()
options.add_argument("--headless=new")
options.add_argument(f"--proxy-server={proxy}")

# initialize Chrome driver
driver = webdriver.Chrome(
        service=Service(ChromeDriverManager().install()),
        options=options

)

# navigate to the target webpage
driver.get("https://httpbin.io/ip")

# print the body content of the target webpage
print(driver.find_element(By.TAG_NAME, "body").text)

# release the resources and close the browser
driver.quit()/































ใน Terminal คุณจะได้รับการตอบกลับดังนี้:

{

  “origin”: “194.5.25.34:443”

}

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

Selenium Wire

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

หากต้องการติดตั้ง Selenium Wire ให้รันคำสั่งนี้ใน Terminal: 


pip install blinker==1.7.0 selenium-wire/
      
        

      


pip3 install blinker==1.7.0 selenium-wire/
      
        

      

DataImpulse proxies ใน Selenium

ถึงเวลานำ DataImpulse proxies มาใช้งาน เมื่อทุกอย่างติดตั้งเรียบร้อยแล้ว เราพร้อมดำเนินการยืนยันตัวตนของ proxy ในขั้นตอนนี้ คุณต้องมีข้อมูลเข้าสู่ระบบ รหัสผ่าน ที่อยู่ และพอร์ตที่บันทึกไว้ในส่วนแพ็กเกจที่เลือกบน DataImpulse dashboard เราจะใช้ residential proxy 

ไปที่สคริปต์กัน:


from seleniumwire import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By

# configure the proxy
proxy_username = ""
proxy_password = ""
proxy_address = "gw.dataimpulse.com"
proxy_port = "823"

# formulate the proxy url with authentication
proxy_url = f"http://{proxy_username}:{proxy_password}@{proxy_address}:{proxy_port}"

# set selenium-wire options to use the proxy
seleniumwire_options = {
    "proxy": {
        "http": proxy_url,
        "https": proxy_url
    },
}

# set Chrome options to run in headless mode
options = Options()
options.add_argument("--headless=new")

# initialize the Chrome driver with service, selenium-wire options, and chrome options
driver = webdriver.Chrome(
    service=Service(ChromeDriverManager().install()),
    seleniumwire_options=seleniumwire_options,
    options=options
)

# navigate to the target webpage
driver.get("https://httpbin.io/ip")

# print the body content of the target webpage
print(driver.find_element(By.TAG_NAME, "body").text)

# release the resources and close the browser
driver.quit()/












































ใน VS Code จะมีลักษณะดังนี้:

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

เคล็ดลับ

  • ใช้เฉพาะเว็บไซต์ทางการ – ดาวน์โหลดโปรแกรมที่จำเป็นทั้งหมดจากเว็บไซต์ทางการที่ปลอดภัย 
  • ตรวจสอบความเข้ากันได้ – ตรวจสอบอีกครั้งว่าเวอร์ชันของ Selenium, ChromeDriver และเบราว์เซอร์ของคุณเข้ากันได้
  • อัปเดตเป็นประจำ – ตรวจสอบ Selenium, ChromeDriver และเครื่องมืออื่นๆ เป็นประจำเพื่อใช้ฟีเจอร์ล่าสุด
  • จัดการข้อมูลเข้าสู่ระบบอย่างปลอดภัย – ปกป้องและจัดการรายละเอียดการยืนยันตัวตนอย่างปลอดภัย
  • ใช้ virtual environments – สร้าง virtual environment เพื่อจัดระเบียบ dependencies และป้องกันแพ็กเกจขัดแย้งกัน
  • การจัดการข้อผิดพลาด – เพิ่มกลไกจัดการข้อผิดพลาดในสคริปต์เพื่อรับมือปัญหาที่อาจเกิดขึ้นเมื่อใช้ proxies หรือทำงานกับองค์ประกอบเว็บ

สรุป

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

Share article: