Web Scraping คืออะไรและเหตุใดจึงต้องใช้ Web String

เผยแพร่แล้ว: 2021-08-01

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

สารบัญ

Web Scraping - มันคืออะไร?

Web Scraping เป็นกระบวนการดึงและแยกข้อมูลจากเว็บไซต์ซึ่งจะถูกแปลงเป็นรูปแบบที่ทำให้ผู้ใช้มีไหวพริบ

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

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

วิธีการ Web Scrape ข้อมูลที่เป็นประโยชน์?

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

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

ข้อมูลที่แยกออกมาจะถูกแปลงเป็นรูปแบบที่ใช้งานได้

เหตุใดบางเว็บไซต์จึงไม่อนุญาตการขูดเว็บ

บางเว็บไซต์บล็อกผู้ใช้อย่างโจ่งแจ้งจากการขูดข้อมูล แต่ทำไม? นี่คือเหตุผลว่าทำไม:

  1. เพื่อปกป้องข้อมูลที่ละเอียดอ่อนของตน ตัวอย่างเช่น Google Maps ไม่อนุญาตให้ผู้ใช้ได้รับผลลัพธ์ที่รวดเร็วขึ้นหากมีข้อความค้นหามากเกินไป
  2. เพื่อหลีกเลี่ยงข้อขัดข้องบ่อยครั้ง: เซิร์ฟเวอร์ของเว็บไซต์อาจขัดข้องหรือช้าลงหากมีคำขอที่คล้ายกันจำนวนมากเนื่องจากใช้แบนด์วิดท์จำนวนมาก

หมวดหมู่ต่าง ๆ ของ Web Scrapers

เว็บแครปเปอร์มีความแตกต่างกันในหลายๆ ด้าน มีการใช้งานเครื่องขูดเว็บสี่ประเภท

  1. สร้างไว้ล่วงหน้าหรือสร้างขึ้นเอง
  2. ส่วนขยายเบราว์เซอร์
  3. ส่วนต่อประสานผู้ใช้ (UI)
  4. คลาวด์และท้องถิ่น

1. เครื่องขูดเว็บที่สร้างขึ้นเอง

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

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

2. ส่วนขยายเบราว์เซอร์

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

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

3. ส่วนต่อประสานผู้ใช้ (UI)

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

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

4. คลาวด์หรือท้องถิ่น

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

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

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

การขูดเว็บด้วยวิธีการต่างๆ

สี่วิธีการขูดเว็บที่ใช้กันอย่างแพร่หลายคือ:

  1. การแยกวิเคราะห์ข้อมูลจากเว็บโดยใช้วิธีสตริง
  2. การแยกวิเคราะห์ข้อมูลโดยใช้นิพจน์ทั่วไป
  3. การดึงข้อมูลโดยใช้ HTML parser
  4. ขูดข้อมูลโดยโต้ตอบกับส่วนประกอบจากเว็บไซต์อื่น

การแยกวิเคราะห์ข้อมูลจากเว็บโดยใช้วิธีสตริง

  • เทคนิคนี้จัดหาข้อมูลจากเว็บไซต์โดยใช้วิธีสตริง ในการค้นหาข้อมูลที่ต้องการจากข้อความ HTML สามารถใช้เครื่องมือ find () ได้ การใช้เครื่องมือนี้ สามารถรับแท็กชื่อได้จากเว็บไซต์
  • หากทราบดัชนีของอักขระตัวแรกและตัวสุดท้ายของชื่อ คุณสามารถใช้สตริงสไลซ์เพื่อขูดชื่อได้
  • เครื่องมือ find () จะคืนค่าการเกิดสตริงย่อยแรก จากนั้นดัชนีของแท็กเริ่มต้น <title> สามารถรับได้โดยใช้สตริง ” <title> เพื่อรับ หา ().
  • ข้อมูลที่น่าสนใจคือดัชนีหัวเรื่อง ไม่ใช่ดัชนีของ <title> ในการรับดัชนีสำหรับตัวอักษรตัวแรกในชื่อเรื่อง สามารถเพิ่มความยาวของสตริง “<title> ลงในดัชนีชื่อได้
  • ตอนนี้ เพื่อให้ได้ดัชนีของส่วนสุดท้าย </title> สามารถใช้สตริง “</title>” ได้
  • เมื่อได้ส่วนแรกและส่วนปิดของชื่อแล้ว สามารถแยกวิเคราะห์ชื่อทั้งหมดได้โดยการแบ่งสตริง HTML นี่คือโปรแกรมที่ต้องทำ:

>>> url = “ http://olympus.realpython.org/profiles/poseidon

>>> หน้า = urlopen(url)

>>> html = page.read().decode("utf-8")

>>> start_index = html.find(“<title>”) + len(“<title>”)

>>> end_index = html.find(“</title>”)

>>> ชื่อ = html[start_index:end_index]

>>> ชื่อเรื่อง

'\n<head>\n<title >โปรไฟล์: โพไซดอน'

สังเกตการมีอยู่ของโค้ด HTML ในชื่อ

การแยกวิเคราะห์ข้อมูลโดยใช้นิพจน์ทั่วไป

  • Regular Expressions หรือที่เรียกว่า regexes คือรูปแบบที่ใช้สำหรับค้นหาข้อความภายในสตริง ตัวแยกวิเคราะห์นิพจน์ปกติได้รับการสนับสนุนโดย Python ผ่านโมดูลใหม่
  • ในการเริ่มต้นด้วยการแยกวิเคราะห์นิพจน์ทั่วไป ควรนำเข้าโมดูล re ก่อน อักขระพิเศษที่เรียกว่า metacharacters ใช้ในนิพจน์ทั่วไปเพื่อกล่าวถึงรูปแบบต่างๆ
  • ตัวอย่างเช่น เครื่องหมายดอกจันพิเศษ (*) ใช้เพื่อแสดงถึง 0
  • ตัวอย่างของการใช้ findall () เพื่อค้นหาข้อความภายในสตริงสามารถดูได้ที่ด้านล่าง

>>> อีกครั้ง findall (“xy*, “ac”)

['ac']

  • ในโปรแกรม python นี้ อาร์กิวเมนต์แรกและอาร์กิวเมนต์ที่สองแสดงถึงนิพจน์ทั่วไปและสตริงที่จะตรวจสอบตามลำดับ รูปแบบ “xy* z” จะจับคู่กับส่วนใดๆ ของสตริงที่ขึ้นต้นด้วย “x” และลงท้ายด้วย “z” เครื่องมืออีกครั้ง findall () ส่งคืนรายการที่มีการแข่งขันทั้งหมด
  • สตริง "xz" ตรงกับรูปแบบนี้ ดังนั้นจึงอยู่ในรายการ
  • สามารถใช้จุด (.) เพื่อแสดงอักขระตัวเดียวในนิพจน์ทั่วไป

การดึงข้อมูลโดยใช้ HTML parser

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

  • ขั้นตอนแรกในการแยกวิเคราะห์ HTML คือการติดตั้งซุปที่สวยงามโดยการรัน:

$ python3 -m pip ติดตั้ง beautifulsoup4.

ดูรายละเอียดการติดตั้งได้โดยใช้ Run pip นี่คือโปรแกรมสร้างวัตถุซุปที่สวยงาม:

นำเข้าอีกครั้ง

จาก urllib.request นำเข้า urlopen

url = “http://olympus.realpython.org/profiles/dionysus”

หน้า = urlopen(url)

html = page.read().decode(“utf-8”)

pattern = “<title.*?>.*?</title.*?>”

match_results = re.search (รูปแบบ, html, re.IGNORECASE)

ชื่อเรื่อง = match_results.group()

title = re.sub(“<.*?>”, “”, title) # ลบแท็ก HTML

พิมพ์ (ชื่อเรื่อง)

  • เรียกใช้โปรแกรมซุปที่สวยงามโดยใช้ python โปรแกรมจะเปิด URL ที่ต้องการ อ่านข้อความ HTML จากหน้าเว็บเป็นสตริง และมอบหมายให้ตัวแปร HTML เป็นผลให้วัตถุซุปที่สวยงามถูกสร้างขึ้นและมอบให้กับตัวแปรซุป
  • วัตถุซุปที่สวยงามถูกสร้างขึ้นด้วยข้อโต้แย้งสองข้อ อาร์กิวเมนต์แรกมี HTML ที่จะคัดลอก และอาร์กิวเมนต์ที่สองมีสตริง "html parser” ที่แสดงถึงตัวแยกวิเคราะห์ HTML ของ Python

ขูดข้อมูลโดยโต้ตอบกับส่วนประกอบจากเว็บไซต์อื่น

โมดูล ” url lib” ใช้เพื่อรับเนื้อหาของหน้าเว็บ บางครั้งเนื้อหาจะไม่แสดงอย่างสมบูรณ์ และไม่สามารถเข้าถึงเนื้อหาที่ซ่อนอยู่บางส่วนได้

  • ไลบรารี Python ไม่มีตัวเลือกในการโต้ตอบกับหน้าเว็บโดยตรง สามารถใช้แพ็คเกจของบุคคลที่สามเช่น Mechanical Soup เพื่อจุดประสงค์นี้
  • ซุปเครื่องกลติดตั้งเบราว์เซอร์หัวขาด เบราว์เซอร์ที่ไม่มี UI แบบกราฟิก (ส่วนต่อประสานผู้ใช้) เบราว์เซอร์นี้สามารถควบคุมได้ด้วยโปรแกรมหลาม
  • ในการติดตั้ง Mechanical soup ให้รันโปรแกรม python ต่อไปนี้

$ python3 -m pip ติดตั้ง MechanicalSoup

  • เครื่องมือ pip แสดงรายละเอียดของแพ็คเกจที่ติดตั้ง

วัตถุประสงค์ของการขูดเว็บ

รายการต่อไปนี้แสดงวัตถุประสงค์ทั่วไปในการขูดเว็บ

  1. ขูดรายละเอียดของราคาหุ้นและโหลดไปยังแอป API
  2. จัดหาข้อมูลจากสมุดหน้าเหลืองเพื่อสร้างลูกค้าเป้าหมาย
  3. ขูดข้อมูลจากตัวค้นหาร้านค้าเพื่อระบุที่ตั้งธุรกิจที่มีประสิทธิภาพ
  4. ขูดข้อมูลเกี่ยวกับผลิตภัณฑ์จาก Amazon หรือแพลตฟอร์มอื่นๆ เพื่อวิเคราะห์คู่แข่ง
  5. การหาข้อมูลเกี่ยวกับกีฬาเพื่อการเดิมพันหรือความบันเทิง
  6. แยกวิเคราะห์ข้อมูลด้านการเงินเพื่อศึกษาและวิจัยตลาด

บทสรุป

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

หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับวิทยาศาสตร์ข้อมูล เราขอแนะนำให้คุณเข้าร่วม หลักสูตร Executive Program in Data Science ระยะเวลา 12 เดือนจาก IIIT Bangalore ซึ่งคุณจะทำความคุ้นเคยกับแมชชีนเลิร์นนิง สถิติ EDA การวิเคราะห์ และอัลกอริทึมอื่นๆ ที่สำคัญสำหรับ การประมวลผลข้อมูล ด้วยการเปิดรับโครงการกว่า 60 โครงการ กรณีศึกษา และโครงการสำคัญ คุณจะเชี่ยวชาญเครื่องมือการเขียนโปรแกรมและภาษาสี่ภาษา รวมถึง Python, SQL และ Tableau คุณยังคงได้รับประโยชน์จากความได้เปรียบจากการเรียนรู้แบบเพื่อนที่ upGrad เสนอให้นักเรียนโดยให้การเข้าถึงฐานผู้เรียนมากกว่า 40,000

คุณจะได้เรียนรู้จากคณาจารย์ด้าน Data Science ชั้นนำของอินเดียและผู้เชี่ยวชาญในอุตสาหกรรมในช่วงเซสชั่นสดกว่า 40 เซสชั่น ซึ่งจะให้การสนับสนุนด้านอาชีพและการให้คำปรึกษาแบบ 360° เพื่อช่วยให้คุณได้รับตำแหน่งในบริษัทชั้นนำที่คุณเลือก

วางแผนอาชีพวิทยาศาสตร์ข้อมูลของคุณวันนี้

สมัครหลักสูตร Advanced Certificate in Data Science จาก IIIT-B