Xạ trị - Vỏ

Sự miêu tả

Scrapy shell có thể được sử dụng để loại bỏ dữ liệu với mã không có lỗi mà không cần sử dụng spider. Mục đích chính của Scrapy shell là để kiểm tra mã được trích xuất, biểu thức XPath hoặc CSS. Nó cũng giúp chỉ định các trang web mà bạn đang thu thập dữ liệu.

Cấu hình Shell

Shell có thể được định cấu hình bằng cách cài đặt bảng điều khiển IPython (được sử dụng cho máy tính tương tác), là một shell tương tác mạnh mẽ cho phép hoàn thành tự động, đầu ra được tô màu, v.v.

Nếu bạn đang làm việc trên nền tảng Unix, thì tốt hơn hết bạn nên cài đặt IPython. Bạn cũng có thể sử dụng bpython , nếu IPython không thể truy cập được.

Bạn có thể định cấu hình trình bao bằng cách đặt biến môi trường có tên SCRAPY_PYTHON_SHELL hoặc bằng cách xác định tệp scrapy.cfg như sau:

[settings]
shell = bpython

Khởi động Shell

Scrapy shell có thể được khởi chạy bằng lệnh sau:

scrapy shell <url>

Các url quy định cụ thể các URL mà cần dữ liệu được cạo.

Sử dụng Shell

Trình bao cung cấp một số phím tắt bổ sung và đối tượng Scrapy như được mô tả trong bảng sau:

Các phím tắt có sẵn

Shell cung cấp các phím tắt có sẵn sau đây trong dự án:

Sr.No Phím tắt & Mô tả
1

shelp()

Nó cung cấp các đối tượng và phím tắt có sẵn với tùy chọn trợ giúp.

2

fetch(request_or_url)

Nó thu thập phản hồi từ yêu cầu hoặc URL và các đối tượng liên quan sẽ được cập nhật đúng cách.

3

view(response)

Bạn có thể xem phản hồi cho yêu cầu đã cho trong trình duyệt cục bộ để quan sát và để hiển thị chính xác liên kết bên ngoài, liên kết này sẽ gắn thẻ cơ sở vào nội dung phản hồi.

Vật liệu trị liệu có sẵn

Shell cung cấp các đối tượng Scrapy có sẵn sau đây trong dự án:

Sr.No Mô tả đối tượng
1

crawler

Nó chỉ định đối tượng trình thu thập thông tin hiện tại.

2

spider

Nếu không có trình thu thập dữ liệu cho URL hiện tại, thì nó sẽ xử lý URL hoặc đối tượng trình thu thập dữ liệu bằng cách xác định trình thu thập dữ liệu mới.

3

request

Nó chỉ định đối tượng yêu cầu cho trang được thu thập cuối cùng.

4

response

Nó chỉ định đối tượng phản hồi cho trang được thu thập cuối cùng.

5

settings

Nó cung cấp các cài đặt Scrapy hiện tại.

Ví dụ về Phiên Shell

Hãy để chúng tôi thử tìm kiếm trang web scrapy.org và sau đó bắt đầu thu thập dữ liệu từ reddit.com như được mô tả.

Trước khi tiếp tục, đầu tiên chúng ta sẽ khởi chạy trình bao như được hiển thị trong lệnh sau:

scrapy shell 'http://scrapy.org' --nolog

Scrapy sẽ hiển thị các đối tượng có sẵn trong khi sử dụng URL ở trên -

[s] Available Scrapy objects:
[s]   crawler    <scrapy.crawler.Crawler object at 0x1e16b50>
[s]   item       {}
[s]   request    <GET http://scrapy.org >
[s]   response   <200 http://scrapy.org >
[s]   settings   <scrapy.settings.Settings object at 0x2bfd650>
[s]   spider     <Spider 'default' at 0x20c6f50>
[s] Useful shortcuts:
[s]   shelp()           Provides available objects and shortcuts with help option
[s]   fetch(req_or_url) Collects the response from the request or URL and associated 
objects will get update
[s]   view(response)    View the response for the given request

Tiếp theo, bắt đầu với hoạt động của các đối tượng, được hiển thị như sau:

>> response.xpath('//title/text()').extract_first() 
u'Scrapy | A Fast and Powerful Scraping and Web Crawling Framework'  
>> fetch("http://reddit.com") 
[s] Available Scrapy objects: 
[s]   crawler     
[s]   item       {} 
[s]   request     
[s]   response   <200 https://www.reddit.com/> 
[s]   settings    
[s]   spider      
[s] Useful shortcuts: 
[s]   shelp()           Shell help (print this help) 
[s]   fetch(req_or_url) Fetch request (or URL) and update local objects 
[s]   view(response)    View response in a browser  
>> response.xpath('//title/text()').extract() 
[u'reddit: the front page of the internet']  
>> request = request.replace(method="POST")  
>> fetch(request) 
[s] Available Scrapy objects: 
[s]   crawler     
...

Gọi Shell từ Nhện để Kiểm tra Phản hồi

Bạn có thể kiểm tra các phản hồi được xử lý từ spider, chỉ khi bạn đang mong đợi nhận được phản hồi đó.

Ví dụ -

import scrapy 

class SpiderDemo(scrapy.Spider): 
   name = "spiderdemo" 
   start_urls = [ 
      "http://mysite.com", 
      "http://mysite1.org", 
      "http://mysite2.net", 
   ]  
   
   def parse(self, response): 
      # You can inspect one specific response 
      if ".net" in response.url: 
         from scrapy.shell import inspect_response 
         inspect_response(response, self)

Như được hiển thị trong đoạn mã trên, bạn có thể gọi shell từ nhện để kiểm tra các phản hồi bằng cách sử dụng hàm sau:

scrapy.shell.inspect_response

Bây giờ chạy con nhện và bạn sẽ nhận được màn hình sau:

2016-02-08 18:15:20-0400 [scrapy] DEBUG: Crawled (200)  (referer: None) 
2016-02-08 18:15:20-0400 [scrapy] DEBUG: Crawled (200)  (referer: None) 
2016-02-08 18:15:20-0400 [scrapy] DEBUG: Crawled (200)  (referer: None) 
[s] Available Scrapy objects: 
[s]   crawler     
...  
>> response.url 
'http://mysite2.org'

Bạn có thể kiểm tra xem mã được trích xuất có hoạt động hay không bằng cách sử dụng mã sau:

>> response.xpath('//div[@class = "val"]')

Nó hiển thị đầu ra là

[]

Dòng trên chỉ hiển thị một đầu ra trống. Bây giờ bạn có thể gọi shell để kiểm tra phản hồi như sau:

>> view(response)

Nó hiển thị phản hồi là

True