Chuyển đến nội dung chính

Công cụ của mẫu (tools)

Trong công cụ tạo mẫu Template Toolkit, biến toàn cầu $tools luôn khả dụng, chứa một tập hợp các công cụ có sẵn trong bất kỳ mẫu nào và bên trong công cụ cào dữ liệu JS. Ngoài ra còn có biến $tools.error, chứa mô tả lỗi nếu chúng phát sinh trong quá trình hoạt động của tất cả các công cụ.

Thêm truy vấn $tools.query.*

Công cụ này cho phép thêm các truy vấn vào các truy vấn hiện có ngay trong khi tác vụ đang chạy, tạo ra chúng dựa trên các kết quả đã cào được. Có thể được sử dụng như một giải pháp thay thế cho chức năng Parse to level trong các công cụ cào dữ liệu chưa được triển khai tính năng này. Có 2 phương thức:

  • [% tools.query.add(query, maxLevel) %] - thêm một truy vấn đơn lẻ
  • [% tools.query.addAll(array, item, maxLevel) %] - thêm một mảng các truy vấn

Tham số maxLevel chỉ định mức độ tối đa để thêm truy vấn và là tùy chọn: nếu bị bỏ qua, thực tế công cụ cào dữ liệu sẽ thêm các truy vấn mới cho đến khi hết. Cũng nên bật tùy chọn Unique queries (Truy vấn duy nhất) để tránh lặp vô tận và công việc dư thừa của công cụ cào dữ liệu.

Có khả năng thiết lập mức độ tùy ý cho các truy vấn con. Điều này có thể được sử dụng để phân bổ logic, tức là khi mỗi mức độ là một chức năng riêng biệt.

ví dụ:

  • [% tools.query.add({query => query, lvl => 1}) %] - thêm truy vấn vào một mức độ cụ thể.

ví dụ cho JS:

this.query.add({
query: "some query",
lvl: 1,
})
Ví dụ

Kết quả hoạt động của preset trên ảnh chụp màn hình:

công cụ cào dữ liệu:
parser
what is parsing in programming
parsing in compiler
compiler and parser development
what is syntax analysis
difference between lexical analysis and syntax analysis
syntax analyzer
parser programming language
parser:
parser definition
xml parser
parser generator
parser swtor
parser c++
ffxiv parser
html parser
parser java
what is parsing in programming:
parse wikipedia
parser compiler
what is a parser
parsing programming languages
definition of parser
parsing c++
parser define
parsing java
html parser:
online html parser
html parser php
html parser java
...

Phân tích cấu trúc JSON $tools.parseJSON()

Công cụ này cho phép giải tuần tự hóa dữ liệu ở định dạng JSON thành các biến (đối tượng) có sẵn trong công cụ tạo mẫu. Ví dụ sử dụng:

[% tools.parseJSON(data) %]

Sau khi giải tuần tự hóa, các khóa từ đối tượng nhận được có thể được truy cập như các biến và mảng thông thường. Nếu một chuỗi JSON không hợp lệ được cung cấp làm đối số, công cụ cào dữ liệu sẽ ghi lại lỗi vào $tools.error.

Ví dụ

Xuất ra CSV $tools.CSVline

Công cụ này tự động chuyển đổi các giá trị sang định dạng CSV và thêm ký tự xuống dòng, do đó trong định dạng kết quả chỉ cần liệt kê các biến cần thiết, và đầu ra sẽ là một tệp CSV hợp lệ, sẵn sàng để nhập vào Google Docs / Excel / v.v.

Ví dụ sử dụng:

[% tools.CSVline(query, p1.serp.0.link, p2.title) %]

Video sử dụng $tools.CSVline():

Làm việc với CSDL SQLite $tools.sqlite.*

Công cụ này cho phép làm việc dễ dàng và đầy đủ với các cơ sở dữ liệu SQLite. Có ba phương thức:

  • $tools.sqlite.get() - phương thức cho phép lấy thông tin đơn lẻ từ CSDL bằng SELECT, ví dụ:
[% res = tools.sqlite.get('results/test.sqlite', 'SELECT COUNT(*) AS count FROM test') %]
  • $tools.sqlite.run() - phương thức cho phép thực hiện các thao tác với CSDL (INSERT, DROP, v.v.), ví dụ:
[% res = tools.sqlite.run('results/test.sqlite', 'INSERT INTO test VALUES(?)', 'test') %]
  • $tools.sqlite.all() - phương thức cho phép xuất tất cả dữ liệu từ bảng, ví dụ:
[% res = tools.sqlite.get('results/test.sqlite', 'SELECT * FROM test') %]

Thay thế user-agent $tools.ua.*

Công cụ này được thiết kế để thay đổi user-agent trong các công cụ cào dữ liệu có sử dụng nó (ví dụ: Net::HTTPNet::HTTP). Có hai phương pháp:

  • $tools.ua.list() - chứa danh sách đầy đủ các user-agent có sẵn.
  • $tools.ua.random() - xuất ra một user-agent ngẫu nhiên từ danh sách có sẵn.

Ví dụ sử dụng:

Ví dụ
mẹo

Danh sách tất cả user-agent được lưu trữ trong tệp files/tools/user-agents.txt, có thể chỉnh sửa nếu cần.

ghi chú

Khi sử dụng công cụ này cho tham số User agent trong các công cụ cào dữ liệu, cần phải chỉ định rõ ràng:

[% tools.ua.random() %]

Hỗ trợ JS trong tools $tools.js.*

Công cụ này cho phép thêm các hàm JS của riêng bạn và sử dụng chúng trực tiếp trong công cụ tạo mẫu. Việc sử dụng các mô-đun Node.js cũng được hỗ trợ. Các hàm được thêm vào trong Tools -> JavaScript Editor

Làm việc với base64 $tools.base64.*

Công cụ này cho phép làm việc với base64 trực tiếp trong công cụ cào dữ liệu. Công cụ này có 2 phương thức:

  • $tools.base64.encode() - mã hóa văn bản sang base64
  • $tools.base64.decode() - giải mã chuỗi base64 thành văn bản

Ví dụ sử dụng:

Ví dụ

Danh mục dữ liệu $tools.data.*

Công cụ này thực chất là một đối tượng chứa một lượng lớn thông tin được cài đặt sẵn - ngôn ngữ, khu vực, tên miền cho các công cụ tìm kiếm, v.v. Danh sách đầy đủ các phần tử (có thể thay đổi trong tương lai):

"YandexWordStatRegions", "TopDomains", "CountryCodes", "YahooLocalDomains", "GoogleDomains", "BingTranslatorLangs", "Top1000Words", "GoogleLangs", "GoogleInterfaceLangs", "EnglishMonths", "GoogleTrendsCountries"

Mỗi phần tử này là một mảng hoặc hash dữ liệu, có thể xem nội dung bằng cách xuất dữ liệu, ví dụ, sang JSON:

[% tools.data.GoogleDomains.json() %]

Lưu trữ dữ liệu trong bộ nhớ $tools.memory.*

Kho lưu trữ key/value đơn giản trong bộ nhớ, dùng chung cho tất cả các tác vụ, yêu cầu API, v.v., sẽ bị xóa khi khởi động lại công cụ cào dữ liệu. Có ba phương thức:

  • [% tools.memory.set(key, value) %] - thiết lập giá trị value cho khóa key
  • [% tools.memory.get(key) %] - trả về giá trị tương ứng với khóa key
  • [% tools.memory.delete(key) %] - xóa bản ghi theo khóa key khỏi bộ nhớ

Lấy thông tin về phiên bản A-Parser $tools.aparser.version()

Công cụ này cho phép lấy thông tin về phiên bản A-Parser và xuất nó vào kết quả.

Ví dụ sử dụng:

[% tools.aparser.version() %]

Lấy ID tác vụ và số luồng $tools.task.*

Công cụ này cho phép lấy thông tin về ID tác vụ và hiển thị số luồng. Có hai phương thức:

  • [% tools.task.id %] - trả về ID tác vụ
  • [% tools.task.threadsCount %] - trả về số lượng luồng được sử dụng trong tác vụ

Dừng tác vụ $tools.task.stop()

Công cụ này cho phép dừng thực hiện tác vụ bất cứ lúc nào. Một chuỗi được chấp nhận làm đối số, chuỗi này phải chứa lý do dừng tác vụ.

Ví dụ sử dụng:

[% IF query.num == 3;
tools.task.stop('Stop after 3 queries');
END %]