Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การใช้ Web Scraping ใน Python ด้วย Scrapy


ในบทความนี้ เราจะเรียนรู้เกี่ยวกับเทคนิคการขูดเว็บโดยใช้โมดูล 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