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

Sử dụng biểu thức chính quy

Thông tin chung

Trong A-Parser, các biểu thức chính quy tương thích với Perl/JavaScript được áp dụng, có thể được sử dụng:

Tài liệu chi tiết về biểu thức chính quy có thể được tìm thấy tại các nguồn sau:

Trong A-Parser, có khả năng xử lý bất kỳ kết quả nào bằng biểu thức chính quy, để thực hiện việc này, tùy chọn Parse custom results (Sử dụng regex) được sử dụng:

Tùy chọn Sử dụng regex

Đặc điểm sử dụng và các cờ

  • Biểu thức chính quy được viết không có dấu phân cách //
  • Các cờ sau được hỗ trợ:
    • i - tìm kiếm không phân biệt chữ hoa chữ thường
    • s - dấu chấm bao gồm tất cả các ký tự, bao gồm cả ngắt dòng
    • g - tìm kiếm hoặc thay thế toàn cục

Ngoài ra, có thể chỉ định cờ ngay trong chính regex, ví dụ: tìm kiếm từ test trong mỗi dòng của toàn bộ văn bản (hoặc mã trang, tùy thuộc vào việc regex được áp dụng cho cái gì) bằng cách sử dụng cờ m (multi line - các ký tự ^$ hoạt động tương ứng như bắt đầu và kết thúc dòng):

(?m)^(.+?test.+?)$

Trích xuất thông tin tùy ý

Mô tả làm việc với biểu thức chính quy trong trình chỉnh sửa tác vụ

Với sự trợ giúp của tùy chọn Parse custom results (Sử dụng regex) hoặc Trình tạo kết quả, có thể sử dụng các biểu thức chính quy để trích xuất thông tin tùy ý từ kết quả cào dữ liệu, ví dụ: từ mã nguồn HTML của các trang hoặc từ các kết quả đã được chuẩn bị sẵn

  • Trong phần Parse result (Áp dụng cho), chọn kết quả từ công cụ cào dữ liệu, đó có thể là kết quả đơn giản hoặc mảng
  • Biểu thức chính quy được chỉ định không có dấu phân cách, sau đó có khả năng chỉ định cờ
  • Trong Result type (Loại kết quả), chỉ định loại kết quả - Flat (kết quả đơn giản) hoặc Array (mảng). Nếu mảng được chọn làm kết quả nguồn hoặc cờ g của biểu thức chính quy được sử dụng, kết quả sẽ luôn được lưu vào mảng. Trong trường Name (Tên), chỉ định tên của mảng
  • Mỗi dấu ngoặc thu giữ của biểu thức chính quy có thể được lưu dưới dạng một phần tử riêng biệt, tên của phần tử được ghi vào trường tương ứng $1 to, $2 to... - trong đó con số biểu thị số thứ tự của dấu ngoặc thu giữ
  • Trong trường RegEx (Regex), bạn có thể sử dụng trình tạo mẫu, cho phép sử dụng truy vấn như một phần của biểu thức chính quy

Các kết quả mới được tạo có thể được sử dụng khi định dạng kết quả, trong trình tạo kết quả, trong lọckhử trùng lặp kết quả hoặc trong tùy chọn Parse custom results (Sử dụng regex) tiếp theo. Tùy chọn này tương tự như trình tạo kết quả khi sử dụng RegEx Match

Ví dụ cào dữ liệu liên kết hình ảnh từ mã nguồn HTML

Để giải quyết nhiệm vụ này, chúng ta sử dụng công cụ cào dữ liệu Net::HTTPNet::HTTP để lấy mã nguồn của trang. Chúng tôi áp dụng biểu thức chính quy với các cờ isg cho $data (trang đã tải xuống), lưu kết quả vào các phần tử src của mảng images. Trong định dạng kết quả, chúng tôi chỉ định hiển thị tất cả các phần tử src thông qua ngắt dòng.

Kết quả cào dữ liệu cho truy vấn http://a-parser.com/ trong tệp kết quả chúng ta sẽ nhận được danh sách sau:

/img/lang/en.png  
/img/lang/ru.png
img/[email protected]
https://files.a-parser.com/img/site/tour_ru/V1qpV.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_1_all_parsers_list.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_1_quick_task.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_2_task_editor_easy.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_3_task_editor_analyze_domains.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_4_task_editor_parse_emails.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_5_queue_fast_google.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_6_queue_spyserp.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_7_javascript_parser.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_8_scheduler.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_9_settings.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_10_proxies.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_11_templates.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_12_task_tester.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_13_parser_test.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_14_api.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_15_resources.png
data/avatars/s/0/12.jpg?1507557563
data/avatars/s/0/12.jpg?1507557563
data/avatars/s/13/13392.jpg?1570706020
data/avatars/s/16/16560.jpg?1586782475
data/avatars/s/1/1240.jpg?1537376153
styles/uix/xenforo/avatars/avatar_s.png
data/avatars/s/0/371.jpg?1412969226
styles/uix/xenforo/avatars/avatar_s.png
//mc.yandex.ru/watch/26891250
Tải xuống ví dụ

Cách nhập ví dụ vào A-Parser


eJxtVN9v2jAQ/l8sJArqYH3YS7Stokhomxgwmj5BJlnkyLz612yHFUX533d2Egfa
vYDv7rvvvvNdXBFH7bPdGLDgLEl2FdHhTBKSw5GW3JFboqmxYHx4R1bgkuRLmm7Q
HxEVcWcNmHMorVNiC7ZJNM0BuaijwS7gBc2PTBS7n5+zsTWH/d6OP/mf3XBPspvJ
+H4UTh08bZiZLSJh66LG0DM6w/+KigATtAAbkV4zwSIkq3uR6gTGsBwQxXK0j8oI
6kwn+kR56WGDhmvShG+GgyBWDkekzrJYYBGiHq7vJu3dxeAjPUGqfAnGoXcv0Gr1
DvBmwEe7MqOJe/EMNM+ZY0pS3lTwnfRVnyT7E0RKhVg8GgZ2YZRAl4NA4J3nTt2O
DIJNkKIMuT+aHJIcKbdwSyxKXVAUkr+OMAeGOmXW2utBf0WUnHG+hBPwHhb4H0rG
c1yV2RGTvraJ/4es33DUsb3LUjisvwY1RJZgPay/91m5WqqiuwzOBHNo27kqpR/M
e3Q+A+h4ZysPE8pALNMyt9Xxa9Ag/Wb0I5vp3nXVxtVYrp0HJY+sWLfb1iFLmeIn
t5ZzJTQH35csOcexWNj26zGz7Ri80Qt8nTwPJa4+VqcUt98eG6naMFy/D16gwJu8
rNpSHijnT9vlZYT0K4XGL+e0TaZT+q55BiYHJabEJzooFK4UtlVn8ZGIT0l18VQk
VY1j+m03Dcb35BHow8uxOAOS3NX/AFJvlP8=

Trình tạo biểu thức chính quy

Bắt đầu từ phiên bản 1.2.78, Trình tạo biểu thức chính quy đã được thêm vào.

Bạn có thể tìm thấy nó trong tab Tools -> Regex Builder. Bạn cũng có thể gửi mã trang nhận được trực tiếp trong Cào dữ liệu thử nghiệm. Để thực hiện việc này, cần bật chế độ debug và nhấp vào liên kết Go to RegEx Builder.

Mở mã trang trong trình tạo biểu thức chính quy

Trong trình tạo, có khả năng chọn ngôn ngữ lập trình mà các biểu thức chính quy nhận được sẽ được sử dụng.

Để làm việc với trình tạo, bạn cần dán văn bản nguồn vào trường bên trái (hoặc nó sẽ được dán tự động từ Cào dữ liệu thử nghiệm khi chuyển sang Go to Regex Builder). Ở bên phải, chúng ta cấu hình các tham số của biểu thức chính quy tương lai.

Để soạn một biểu thức chính quy đơn giản (ví dụ: để lấy tiêu đề), chỉ cần chỉ định các phần tử cần thiết của biểu thức chính quy.

  • Trong trường Before group (Trước nhóm), nhập các ký tự nằm trước thông tin mà chúng ta cần
  • Trong trường After group (Sau nhóm), nhập các ký tự nằm sau dữ liệu cần thiết
  • Trong trường Nhóm bắt đầu bằng, chỉ định các ký tự mà chuỗi tìm kiếm phải bắt đầu bằng
  • Trong trường Group ends with (Nhóm kết thúc bằng), chỉ định các ký tự phải ở cuối chuỗi tìm kiếm
Ví dụ lấy tiêu đề bằng cách sử dụng trình tạo biểu thức chính quy

Như có thể thấy trong ảnh chụp màn hình ở trên, chúng ta đang soạn một biểu thức chính quy sẽ chọn title của trang web. Trước nhóm, chúng ta đặt <title> và sau nhóm là </title>, và ví dụ, chúng ta chỉ định rằng chuỗi tìm kiếm bắt đầu bằng chữ cái W.

Để kiểm tra đầy đủ biểu thức chính quy nhận được, có khả năng bật các cờ cần thiết: g, si.

Bạn cũng có thể soạn các biểu thức chính quy phức tạp hơn, trong đó có 2 hoặc nhiều nhóm. Ví dụ, hãy thử soạn một biểu thức chính quy để thu thập tất cả các liên kết và neo trong danh sách <li>. Để thực hiện việc này, chúng ta cần bật cờ g và thêm một nhóm tìm kiếm khác, vì trong nhóm đầu tiên sẽ là các liên kết, và trong nhóm thứ hai là các neo.

Ví dụ sử dụng các nhóm trong trình tạo biểu thức chính quy

Sau khi thiết lập các tham số cần thiết cho cả hai nhóm, chúng ta nhận được biểu thức chính quy:

<li><a href="(.+?)">(.+?)<\/a

Để kiểm tra biểu thức chính quy, hãy nhấn nút Kiểm tra:

Kiểm tra regex đã tạo trong trình tạo biểu thức chính quy

Sau khi thực thi biểu thức chính quy, kết quả hoạt động của nó được hiển thị ở bên dưới: chuỗi đầy đủ và các nhóm thu giữ được. Khi nhấp đúp vào bất kỳ phần tử nào trong bảng kết quả, văn bản ban đầu sẽ cuộn đến vị trí tìm thấy sự trùng khớp đó.