Liệu pháp - Máy trích xuất liên kết

Sự miêu tả

Như chính cái tên đã chỉ ra, Trình trích xuất liên kết là các đối tượng được sử dụng để trích xuất liên kết từ các trang web bằng cách sử dụng scrapy.http.Responsecác đối tượng. Trong Scrapy, có các công cụ trích xuất tích hợp nhưscrapy.linkextractors nhập khẩu LinkExtractor. Bạn có thể tùy chỉnh trình trích xuất liên kết của riêng mình theo nhu cầu của mình bằng cách triển khai một giao diện đơn giản.

Mỗi trình trích xuất liên kết có một phương thức công khai được gọi là extract_linksbao gồm một đối tượng Response và trả về danh sách các đối tượng scrapy.link.Link. Bạn có thể khởi tạo trình trích xuất liên kết chỉ một lần và gọi phương thức extract_links nhiều lần để trích xuất các liên kết với các phản hồi khác nhau. CrawlSpiderclass sử dụng trình trích xuất liên kết với một tập hợp các quy tắc có mục đích chính là trích xuất liên kết.

Tham chiếu trình trích xuất liên kết tích hợp

Thông thường, các trình trích xuất liên kết được nhóm với Scrapy và được cung cấp trong mô-đun scrapy.linkextractors. Theo mặc định, trình trích xuất liên kết sẽ là LinkExtractor có chức năng ngang bằng với LxmlLinkExtractor -

from scrapy.linkextractors import LinkExtractor

LxmlLinkExtractor

class scrapy.linkextractors.lxmlhtml.LxmlLinkExtractor(allow = (), deny = (), 
   allow_domains = (), deny_domains = (), deny_extensions = None, restrict_xpaths = (), 
   restrict_css = (), tags = ('a', 'area'), attrs = ('href', ), 
   canonicalize = True, unique = True, process_value = None)

Các LxmlLinkExtractor là một liên kết vắt rất khuyến khích, bởi vì nó có tùy chọn lọc tiện dụng và nó được sử dụng với HTMLParser mạnh mẽ lxml của.

Sr.No Mô tả về Thông Số
1

allow (một biểu thức chính quy (hoặc danh sách))

Nó cho phép một biểu thức hoặc một nhóm biểu thức duy nhất phù hợp với url sẽ được trích xuất. Nếu nó không được đề cập, nó sẽ khớp với tất cả các liên kết.

2

deny (một biểu thức chính quy (hoặc danh sách))

Nó chặn hoặc loại trừ một biểu thức hoặc nhóm biểu thức duy nhất phải khớp với url không được trích xuất. Nếu nó không được đề cập hoặc để trống, thì nó sẽ không loại bỏ các liên kết không mong muốn.

3

allow_domains (str hoặc danh sách)

Nó cho phép một chuỗi đơn hoặc danh sách các chuỗi phải khớp với các miền mà các liên kết sẽ được trích xuất từ ​​đó.

4

deny_domains (str hoặc danh sách)

Nó chặn hoặc loại trừ một chuỗi hoặc danh sách các chuỗi phải khớp với các miền mà từ đó các liên kết không được trích xuất.

5

deny_extensions (danh sách)

Nó chặn danh sách các chuỗi có phần mở rộng khi giải nén các liên kết. Nếu nó không được đặt, thì theo mặc định, nó sẽ được đặt thành IGNORED_EXTENSIONS chứa danh sách được xác định trước trong gói scrapy.linkextractors .

6

restrict_xpaths (str hoặc danh sách)

Nó là một vùng danh sách XPath mà từ đó các liên kết sẽ được trích xuất từ ​​phản hồi. Nếu được cung cấp, các liên kết sẽ chỉ được trích xuất từ ​​văn bản, được chọn bởi XPath.

7

restrict_css (str hoặc danh sách)

Nó hoạt động tương tự như tham số limit_xpaths sẽ trích xuất các liên kết từ các vùng được chọn CSS bên trong phản hồi.

số 8

tags (str hoặc danh sách)

Một thẻ đơn hoặc danh sách các thẻ cần được xem xét khi trích xuất các liên kết. Theo mặc định, nó sẽ là ('a', 'area').

9

attrs (danh sách)

Một thuộc tính hoặc danh sách các thuộc tính nên được xem xét trong khi trích xuất các liên kết. Theo mặc định, nó sẽ là ('href',).

10

canonicalize (boolean)

Url được trích xuất được đưa về dạng chuẩn bằng cách sử dụng scrapy.utils.url.canonicalize_url . Theo mặc định, nó sẽ là True.

11

unique (boolean)

Nó sẽ được sử dụng nếu các liên kết trích xuất được lặp lại.

12

process_value (có thể gọi được)

Nó là một hàm nhận một giá trị từ các thẻ và thuộc tính được quét. Giá trị nhận được có thể được thay đổi và trả lại hoặc nếu không sẽ không có gì được trả lại để từ chối liên kết. Nếu không được sử dụng, theo mặc định nó sẽ là lambda x: x.

Thí dụ

Đoạn mã sau được sử dụng để trích xuất các liên kết:

<a href = "javascript:goToPage('../other/page.html'); return false">Link text</a>

Hàm mã sau có thể được sử dụng trong process_value:

def process_value(val): 
   m = re.search("javascript:goToPage\('(.*?)'", val) 
   if m: 
      return m.group(1)