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 nhờ sự trợ giúp của các 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 cài đặt Scrappy
Như Scrappy là một khung mà chúng ta cần để chạy lệnh khởi tạo
>>> hướng dẫn bắt đầu dự án sơ sài
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.
Ví dụ
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
vỏ liệu pháphttps://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