Computer >> Máy Tính >  >> Lập trình >> Python

Triển khai Web Scraping bằng Python với Scrapy

Trong bài viết này, chúng ta sẽ tìm hiểu về kỹ thuật duyệt web bằng cách sử dụng mô-đun Scrappy có sẵn trong Python.

Tìm kiếm web là gì?

Tính năng quét web được sử dụng để lấy / lấy dữ liệu từ một trang web với sự trợ giúp của trình thu thập thông tin / máy quét. Gỡ bỏ trang web rất hữu ích để trích xuất dữ liệu từ một trang web không cung cấp chức năng của một API. Trong python, việc quét web có thể được thực hiện với sự trợ giúp của nhiều mô-đun khác nhau như Beautiful Soup, Scrappy &lxml.

Ở đây chúng ta sẽ thảo luận về việc tìm kiếm trang web bằng cách sử dụng mô-đun Scrappy.

Để làm được điều đó, trước tiên chúng ta cần cài đặt Scrappy .

Nhập vào dòng lệnh hoặc dấu nhắc lệnh -

>>> pip install Scrappy

Như Scrappy là một khung mà chúng ta cần để chạy lệnh khởi tạo

>>> scrappy startproject tutpts

Tại đây, chúng tôi tạo trình thu thập thông tin web / spider để tìm nạp dữ liệu từ một trang web.

Để xây dựng trình thu thập thông tin, chúng tôi tạo một tập lệnh riêng có tên tutptscraw.py Ở đây chúng tôi khai báo một lớp để trích xuất nội dung. Ở đây, chúng tôi đặt tên cho trình thu thập thông tin web và sử dụng .requests, chúng tôi tìm nạp dữ liệu từ URL đã cho.

Các hàm của trình tạo được sử dụng để tạo ra dữ liệu được tìm nạp.

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)

Tại đây, tất cả dữ liệu được đóng gói trong thẻ liên kết được tìm nạp bằng cách sử dụng hàm yêu cầu. Vì scrappy là một khung công tác nhỏ, chúng tôi chạy tất cả các chức năng trong lớp vỏ này.

Để kích hoạt shell phế liệu, chúng tôi sử dụng các lệnh sau

shellcrapy mảnh mai https://www.tutorialspoint.com/index.htm

Bây giờ chúng tôi tìm nạp dữ liệu từ thẻ liên kết bằng cách sử dụng các bộ chọn, tức là CSS hoặc xpaths

response.css('a')
links = response.css('a').extract()

Để có được tất cả các liên kết có sẵn trên trang web, chúng tôi tạo một phương pháp phân tích cú pháp. Scrappy nội bộ bỏ qua các URL đã truy cập trước đó làm giảm thời gian hiển thị trong quá trình hiển thị kết quả.

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)

Kết luận

Trong hướng dẫn này, chúng tôi đã tìm hiểu về cách triển khai trình thu thập thông tin web bằng cách sử dụng mô-đun Scrappy trong python