Các phương thức bổ trợ (utils, tools, sleep)
this.utils.*
.updateResultsData(results, data)
await this.utils.updateResultsData(results, data) - phương thức để tự động điền $pages.$i.data và $data, cần được gọi để thêm nội dung của trang kết quả
.urlFromHTML(url, base)
await this.utils.urlFromHTML(url, base) - xử lý liên kết nhận được từ mã HTML - giải mã các thực thể (& v.v.), có thể truyền tùy chọn base - URL cơ sở (ví dụ: URL của trang nguồn), nhờ đó có thể nhận được liên kết đầy đủ
.url.extractDomain(url, removeDefaultSubdomain)
await this.utils.url.extractDomain(url, removeDefaultSubdomain) - phương thức nhận tham số đầu tiên là một liên kết và trả về tên miền từ liên kết đó. Tham số thứ hai không bắt buộc xác định xem có cắt bỏ subdomain www khỏi tên miền hay không. Mặc định là 0 - tức là không cắt bỏ.
.url.extractTopDomain(url)
await this.utils.url.extractTopDomain(url) - phương thức nhận tham số đầu tiên là một liên kết và trả về tên miền từ liên kết đó, không bao gồm các subdomain.
.url.extractTopDomainByZone(url)
await this.utils.url.extractTopDomainByZone(url) - phương thức nhận tham số đầu tiên là một liên kết và trả về tên miền từ liên kết đó, bao gồm cả việc không có subdomain. Hoạt động với tất cả các vùng khu vực
.url.extractMaxPath(url)
await this.utils.url.extractMaxPath(url) - phương thức nhận một chuỗi và trích xuất URL từ chuỗi đó
.url.extractWOParams(url)
await this.utils.url.extractWOParams(url)- phương thức nhận một liên kết và trả về chính liên kết đó nhưng được cắt bỏ phần tham số. Tức là sẽ trả về URL cho đến dấu ?
.removeHtml(string)
await this.utils.removeHtml(string) - phương thức nhận một chuỗi và trả về chuỗi đó sau khi đã được làm sạch
khỏi các thẻ html
.removeNoDigit(string)
await this.utils.removeNoDigit(string) - phương thức nhận một chuỗi, xóa tất cả ngoại trừ các chữ số và trả về kết quả
.removeComma(string)
await this.utils.removeComma(string) - phương thức nhận một chuỗi, xóa các ký tự như .,\r\n và trả về kết quả
.getAllBlocks(html, regexp, opts?)
await this.utils.getAllBlocks(html, regexp, opts?) - lấy tất cả các khối trên trang với các thẻ đóng tương ứng, phương thức nhận một chuỗi HTML và một biểu thức chính quy chỉ định điểm bắt đầu của khối (bất kỳ khối nào có các thẻ đóng cặp, ví dụ <div>...</div>), kết quả trả về là một mảng tất cả các khối tìm thấy
Tùy chọn opts:
searchStartIndex- chỉ định chỉ số trong chuỗi để bắt đầu tìm kiếm, mặc định là0
const blocks = this.utils.getAllBlocks(html, /<div [^>]*?class="results"/)
.getAllBlocksByAttr(html, tag, attrName, attrRegExp, opts?)
await this.utils.getAllBlocksByAttr(html, tag, attrName, attrRegExp, opts?) - phương thức tương tự như .getAllBlocks, thay vì biểu thức chính quy để tìm điểm bắt đầu khối, bạn chỉ định tên thẻ, tên thuộc tính để tìm kiếm (ví dụ id, class) và biểu thức chính quy sẽ được áp dụng cho giá trị của thuộc tính đã cho
const blocks = this.utils.getAllBlocksByAttr(html, 'div', 'class', /results/)
await tools.*
Đối tượng toàn cục tools, cho phép truy cập vào các chức năng tích hợp sẵn của A-Parser
Tương tự như các công cụ của mẫu template $tools.*
tools.query không khả dụng, cần sử dụng this.query
await tools.createTemplate(string)
Cho phép sử dụng mẫu Template Toolkit bên trong công cụ cào dữ liệu JavaScript.
let template = await tools.createTemplate("Hello [% content %]!")
template = typeof template == 'function' ? await template({content: 'World'}) : template
this.logger.put(template) // Output: Hello World!
Ví dụ sử dụng "Công cụ cào dữ liệu dịch định dạng Markdown sang HTML"
await this.sleep(sec)
await this.sleep(sec)
Thiết lập thời gian tạm dừng trong luồng theo số giây (sec), có thể là số thập phân.
await this.mutex.*
Mutex để đồng bộ hóa giữa các luồng, cho phép khóa một đoạn mã cho một luồng duy nhất
.lock()
Chờ khóa (lock), luồng đầu tiên chiếm được khóa sẽ tiếp tục thực thi, các luồng khác sẽ chờ cho đến khi khóa được giải phóng
.unlock()
Giải phóng khóa, luồng tiếp theo sẽ tiếp tục thực thi nếu nó đang chờ khóa - .lock()
results.<array>.addElement()
Phương thức results.<array>.addElement() cho phép điền vào các mảng trong results một cách thuận tiện hơn. Khi sử dụng nó, bạn không cần nhớ thứ tự các biến trong mảng và liệt kê chúng thủ công.
results.serp.addElement({
link: 'https://google.com',
anchor: 'Google',
snippet: 'Loreps ipsum...',
});
this.isContextAlive()
Phương thức này cần thiết cho các luồng chạy lâu dài xử lý các truy vấn trong vòng lặp, cho phép kết thúc công việc một cách chính xác khi dừng hoặc xóa tác vụ
while (this.isContextAlive()) {
await this.request(...)
}