ในบทความนี้ เราจะเรียนรู้เกี่ยวกับเทคนิคการขูดเว็บโดยใช้โมดูล Scrappy ที่มีอยู่ใน Python
การขูดเว็บคืออะไร
การขูดเว็บจะใช้เพื่อรับ/รับข้อมูลจากเว็บไซต์โดยใช้โปรแกรมรวบรวมข้อมูล/สแกนเนอร์ การทำลายเว็บมีประโยชน์ในการดึงข้อมูลจากหน้าเว็บที่ไม่มีฟังก์ชันการทำงานของ API ใน python การขูดเว็บสามารถทำได้โดยใช้โมดูลต่างๆ เช่น Beautiful Soup, Scrappy &lxml
เราจะพูดถึงการขูดเว็บโดยใช้โมดูล Scrappy
เพื่อที่ เราต้อง ติดตั้ง Scrappy . ก่อน .
พิมพ์เทอร์มินัลหรือพรอมต์คำสั่ง -
>>> pip install Scrappy
ในฐานะที่เป็น เสียดสี เป็นเฟรมเวิร์กที่เราต้องเรียกใช้คำสั่งเริ่มต้น
>>> scrappy startproject tutpts
ที่นี่เราสร้าง โปรแกรมรวบรวมข้อมูลเว็บ / spider เพื่อดึงข้อมูลจากเว็บไซต์
สำหรับการสร้างโปรแกรมรวบรวมข้อมูล เราสร้างสคริปต์แยกต่างหากชื่อ tutptscraw.py ที่นี่เราประกาศคลาสสำหรับการแยกเนื้อหา ที่นี่เราตั้งชื่อโปรแกรมรวบรวมข้อมูลเว็บและใช้ .requests เราดึงข้อมูลจาก URL ที่กำหนด
มีการใช้ฟังก์ชันตัวสร้างซึ่งให้ข้อมูลที่ดึงมา
import scrapy class ExtractUrls(scrapy.Spider): name = "fetch" # generator Function def start_requests(self): # enter the URL urls = ['https://www.tutorialspoint.com/index.htm/', ] for url in urls: yield scrapy.Request(url = url, callback = self.parse)
ข้อมูลทั้งหมดที่ห่อหุ้มอยู่ภายในแท็ก anchor จะถูกดึงข้อมูลโดยใช้ฟังก์ชันคำขอ เนื่องจาก scrappy เป็นเฟรมเวิร์กขนาดเล็ก เราจึงเรียกใช้ฟังก์ชันการทำงานทั้งหมดในเชลล์ที่น่ารำคาญ
ในการเปิดใช้งาน scrap shell เราใช้คำสั่งต่อไปนี้
เปลือกกระท่อนกระแท่น https://www.tutorialspoint.com/index.htm
ตอนนี้เราดึงข้อมูลจากแท็กสมอโดยใช้ตัวเลือกเช่น CSS หรือ xpaths
response.css('a') links = response.css('a').extract()
ในการรับลิงก์ทั้งหมดที่มีอยู่ในหน้าเว็บ เราสร้างวิธีแยกวิเคราะห์ ขยะแขยงข้าม URL ที่เข้าชมก่อนหน้านี้ลดเวลาในการแสดงผลในระหว่างการแสดงผลลัพธ์
import scrapy class ExtractUrls(scrapy.Spider): name = "fetch" # generator Function def start_requests(self): # enter the URL urls = ['https://www.tutorialspoint.com/index.htm/', ] for url in urls: yield scrapy.Request(url = url, callback = self.parse) # Parse function def parse(self, response): title = response.css('title::text').extract_first() # Get anchor tags links = response.css('a::attr(href)').extract() for link in links: yield { 'title': title, 'links': link } if 'tutorialspoint' in link: yield scrapy.Request(url = link, callback = self.parse)
บทสรุป
ในบทช่วยสอนนี้ เราได้เรียนรู้เกี่ยวกับการใช้งานโปรแกรมรวบรวมข้อมูลเว็บโดยใช้โมดูล Scrappy ใน python