Bộ công cụ quét web hoàn chỉnh cho PHP

Roach PHP là bộ công cụ quét web đầy đủ tính năng dành cho PHP, xử lý cả việc thu thập nội dung trang web và xử lý dữ liệu cóp nhặt, khiến nó trở thành một điểm duy nhất để quét trang web PHP

Trong số nhiều tính năng quét web tuyệt vời khác, các tính năng chính của gói này bao gồm

  • Xác định nhện (lớp) được sử dụng để quét các trang web
  • Quy trình thu thập và xử lý dữ liệu được thu thập dữ liệu
  • Trích xuất dữ liệu từ các tài liệu HTML và XML rất đơn giản
  • vỏ tương tác
  • phần mềm trung gian nhện
  • Viết các tiện ích bổ sung để mở rộng hoặc nối vào các tính năng của Roach PHP
  • Tiện ích mở rộng Ghi nhật ký tích hợp

Có một gói roach-php/laravel của bên thứ nhất xác định các dịch vụ thiết thực cho các lệnh Roach PHP và CLI để tạo các trình thu thập thông tin và chạy một Shell tương tác, mặc dù Roach PHP là bất khả tri về khung và tích hợp với bất kỳ dự án PHP nào

_10

Tìm hiểu thêm

Kiểm tra roach-php/laravel để bắt đầu sử dụng Roach PHP trong các dự án Laravel và đảm bảo đọc tài liệu Roach PHP để biết hướng dẫn cài đặt hoàn chỉnh và hướng dẫn

Roach PHP là bộ công cụ quét web hoàn chỉnh dành cho PHP. Nó không chỉ xử lý việc thu thập dữ liệu nội dung web mà còn cung cấp toàn bộ đường dẫn để xử lý dữ liệu đã loại bỏ, làm cho nó trở thành tài nguyên tất cả trong một để thu thập các trang web bằng PHP

Các tính năng chính mà gói này cung cấp (trong số nhiều tính năng quét web tuyệt vời khác) bao gồm

  • Xác định Spiders (lớp) được thiết kế để thu thập dữ liệu các trang web
  • Đường ống dữ liệu để xử lý và thu thập dữ liệu mà trình thu thập dữ liệu
  • Dễ dàng trích xuất dữ liệu từ tài liệu HTML và XML
  • vỏ tương tác
  • phần mềm trung gian nhện
  • Viết các tiện ích mở rộng để nối vào/mở rộng các tính năng của Roach PHP
  • Tiện ích mở rộng Ghi nhật ký tích hợp

Mặc dù Roach PHP là framework bất khả tri và tích hợp nó với bất kỳ dự án PHP nào, nhưng vẫn có gói roach-php/laravel của bên thứ nhất để bắt đầu sử dụng Roach trong các dự án Laravel một cách dễ dàng. Gói Laravel xác định các dịch vụ thuận tiện cho các lệnh Roach PHP và CLI để tạo các trình thu thập dữ liệu và chạy một Shell tương tác

1# Create a spider class

2php artisan roach:spider LaravelDocsSpider

3 

4# Start a REPL with a given URL

5php artisan roach:shell https://laravel-news.com

Tìm hiểu thêm

Tài liệu Roach PHP có hướng dẫn cài đặt đầy đủ và hướng dẫn về mọi thứ bạn cần để bắt đầu. Ngoài ra, hãy nhớ xem roach-php/laravel để bắt đầu sử dụng Roach PHP trong các dự án Laravel

Mặc dù người ta nói rằng dữ liệu có sẵn trên internet, nhưng hầu hết thời gian người dùng có đặc quyền tối thiểu đối với dữ liệu này. Đó là do chủ sở hữu dữ liệu đó chưa cung cấp API web chính thức hoặc định dạng có thể tải xuống để truy cập dữ liệu. Đây không phải là cách hiệu quả cũng như không hiệu quả để trích xuất những dữ liệu này theo cách thủ công vì chúng ở định dạng không có cấu trúc. Đó là nơi quét web phát huy tác dụng để khắc phục những hạn chế này. Đó là một cách tiếp cận thực tế và thuận tiện hơn so với quy trình thủ công. Dữ liệu và thông tin rất quan trọng đối với nhiều thứ như nghiên cứu thị trường, phân tích đối thủ cạnh tranh, thông tin về giá, v.v. Trong hướng dẫn này, chúng ta sẽ thảo luận về cách sử dụng web scraping bằng PHP để trích xuất dữ liệu từ một trang web

Tại sao chúng ta nên sử dụng PHP để quét web?

PHP là ngôn ngữ lập trình phía máy chủ được sử dụng rộng rãi nhất. Cạo bằng PHP khá thuận tiện vì quá trình này đã được tăng cường bằng cách sử dụng nhiều công cụ và thư viện bổ sung. Trong hướng dẫn này, chúng ta sẽ khám phá một số thư viện và công cụ PHP đó. Ngoài ra, nếu PHP là ngôn ngữ duy nhất bạn cảm thấy thoải mái, bạn phải làm điều đó với PHP. Không khôn ngoan khi học một ngôn ngữ lập trình mới chỉ để cạo.  

Sử dụng PHP để trích xuất dữ liệu cũng được khuyến nghị khi ứng dụng sẽ sử dụng dữ liệu được trích xuất từ ​​​​việc quét web, cũng đã được viết bằng PHP. Sẽ khó sử dụng trình quét web PHP cùng với ứng dụng web được viết bằng một số ngôn ngữ khác như Python. Do đó, trong những tình huống như vậy, sử dụng PHP sẽ có lợi hơn

Cuối cùng, lợi thế quan trọng nhất của việc sử dụng PHP cho công việc là khả năng tự động hóa toàn bộ quy trình quét web bằng CRON-jobs. Cron-job là một tiện ích phần mềm hoạt động như một bộ lập lịch công việc dựa trên thời gian

Thư viện và công cụ quét web PHP

Như đã mô tả trước đây, có rất nhiều công cụ và thư viện có sẵn cho PHP. Nói chung, các thư viện này có thể được phân loại thành hai loại. Họ đang,

  • Thư viện quét web PHP
  • Thư viện yêu cầu web PHP

Cả hai thư viện này đều có thể tạo yêu cầu với tất cả các phương thức HTTP chính và tìm nạp HTML cơ bản của trang web. Một điểm khác biệt chính giữa hai loại thư viện này là thư viện yêu cầu web không giúp phân tích cú pháp trang web mà yêu cầu HTTP của bạn trả về. Một điểm khác biệt nữa là các thư viện yêu cầu web không cho phép bạn thực hiện một loạt yêu cầu theo thứ tự trong khi chuyển qua một loạt trang web mà bạn đang cố tìm kiếm

Bây giờ chúng ta hãy xem một số công cụ và thư viện thuộc cả hai loại này

Trình phân tích cú pháp HTML DOM đơn giản

Trình phân tích cú pháp HTML Dom cho phép bạn thao tác HTML dễ dàng bằng cách cho phép bạn tìm các phần tử HTML bằng bộ chọn. Bạn có thể lấy thông tin từ một trang web chỉ bằng cách sử dụng một dòng duy nhất với trình phân tích cú pháp HTML DOM. Tuy nhiên, nó khá chậm so với một số thư viện khác

Xoăn

cURL, viết tắt của “Client for URLs”, là một thành phần PHP tích hợp, còn được gọi là thư viện yêu cầu web PHP phổ biến. Thư viện này được sử dụng để quét web với sự trợ giúp của chuỗi và biểu thức chính quy

bệnh gút

Goutte là một thư viện PHP dựa trên khung Symfony. Nó cung cấp các API để thu thập dữ liệu các trang web và cạo nội dung bằng cách sử dụng các phản hồi HTML/XML

Ăn tham

Đây là một thư viện yêu cầu web PHP phổ biến khác cho phép bạn gửi các yêu cầu HTTP một cách dễ dàng. Nó cung cấp API trực quan, xử lý lỗi rộng rãi và khả năng tích hợp với phần mềm trung gian

Làm cách nào để tạo trình quét web bằng PHP?

Xây dựng trình quét web bằng trình phân tích cú pháp HTML DOM đơn giản

Phần này sẽ hướng dẫn bạn quy trình xây dựng trình quét web bằng trình phân tích cú pháp HTML DOM đơn giản.  

Trước tiên, hãy tải xuống phiên bản mới nhất của trình phân tích cú pháp HTML DOM đơn giản bằng cách nhấp vào đây. Giải nén hoặc giải nén tệp đã tải xuống sau khi quá trình tải xuống hoàn tất

Sau đó, tạo một thư mục mới và sao chép và dán simple_html_dom. php vào thư mục vừa tạo. Tiếp theo, tạo một tệp mới với tên cạp. php và lưu nó vào cùng thư mục bạn đã tạo

Sau đó, mở cạp. php trong trình soạn thảo văn bản ưa thích của bạn và bao gồm tham chiếu đến thư viện trình phân tích cú pháp HTML DOM đơn giản ở đầu tập lệnh của bạn. Điều này sẽ cung cấp cho bạn quyền truy cập vào tất cả các chức năng trong thư viện. Bạn có thể sử dụng các dòng mã sau để thêm tham chiếu

Trong ví dụ này, bạn sẽ quét web để trích xuất các bài đánh giá của người dùng về bộ phim “Vệ binh dải ngân hà” từ IMDB. com. Liên kết của trang Web mục tiêu là, https. //www. imdb. com/title/tt2015381/reviews?ref_=tt_urv

Xây dựng Scraper

Đầu tiên, bạn cần tạo một đối tượng DOM để lưu trữ nội dung của URL trên. Bạn phải tạo một biến có tên là HTML và gán cho nó giá trị trả về dưới dạng đối tượng DOM từ hàm file_get_html_(). Đối với điều đó, hãy bao gồm dòng mã sau trong tập lệnh của bạn. Chúng tôi sẽ tối ưu hóa phần tìm nạp sâu hơn trong hướng dẫn này .

$html = file_get_html(‘https://www.imdb.com/title/tt2015381/reviews?ref_=tt_urv‘, false);

Tại đây, bạn sẽ trích xuất số sao đánh giá, tiêu đề đánh giá và nội dung đánh giá từ trang web đó

Bộ công cụ quét web hoàn chỉnh cho PHP
Bộ công cụ quét web hoàn chỉnh cho PHP

Để cạo những dữ liệu này, bạn cần xác định các thành phần HTML và bộ chọn CSS đề cập đến chúng. Nó có thể được thực hiện bằng cách kiểm tra trang web trong trình duyệt của bạn

Bộ công cụ quét web hoàn chỉnh cho PHP
Bộ công cụ quét web hoàn chỉnh cho PHP

Như bạn có thể thấy, có một phần tử div HTML với bộ chọn lớp CSS có tên là review-container, phần tử này chứa tất cả các trường dữ liệu được yêu cầu

Bạn có thể sử dụng vòng lặp for-each để trích xuất dữ liệu được đề cập ở trên từ tất cả các đánh giá của người dùng với sự trợ giúp của bộ chọn lớp đó. Bên trong vùng chứa đánh giá, các bộ chọn lớp sau đề cập đến dữ liệu cần thiết như được liệt kê bên dưới

  • Ipl-ratings-bar đề cập đến số lượng xếp hạng sao
  • tiêu đề đề cập đến tiêu đề của đánh giá
  • Văn bản show-more__control đề cập đến nội dung đánh giá

Bạn cũng có thể sử dụng vòng lặp for-each cho ba bộ chọn CSS ở trên. Để làm điều đó, hãy bao gồm các dòng mã sau trong tập lệnh của bạn

Đoạn mã hoàn chỉnh

Xem mã trên Gist

Bây giờ, tất cả dữ liệu trích xuất đã được lưu trữ trong một mảng có tên $results. Nếu bạn in mảng đó, nó sẽ cho kết quả tương tự như ảnh chụp màn hình sau

Bộ công cụ quét web hoàn chỉnh cho PHP
Bộ công cụ quét web hoàn chỉnh cho PHP

Sau đó, bạn có thể lưu trữ kết quả cạo trong một tệp XML. Để làm được điều đó, trước tiên, bạn cần chuyển đổi mảng

$html = file_get_html(‘https://www.imdb.com/title/tt2015381/reviews?ref_=tt_urv‘, false);
0 thành phần tử XML. Có một lớp dựng sẵn có tên là SimpleXMLEuity có thể được sử dụng trong quy trình đó. Các khối mã sau đây sẽ làm điều đó

Xem mã trên Gist

Bây giờ dữ liệu được lưu trữ trong biến

$html = file_get_html(‘https://www.imdb.com/title/tt2015381/reviews?ref_=tt_urv‘, false);
1. Vì vậy, bạn cần tạo một tệp XML và ghi dữ liệu trong biến đó vào tệp XML đó. Thêm các dòng mã sau để tạo tệp XML và ghi dữ liệu vào đó

Xem mã trên Gist

Cuối cùng, công việc đã hoàn thành, sử dụng trình phân tích cú pháp HTML DOM đơn giản. Tất cả dữ liệu được lưu trữ trong một tệp XML

Xây dựng trình quét web bằng Goutte và Guzzle

Phần này sẽ giải thích cách tạo trình quét web bằng thư viện Guzzle và Goutte, đã được thảo luận trước đó trong hướng dẫn này. Để sử dụng Goutte, bạn phải có PHP 5. 5 trở lên và phiên bản Guzzle 6 trở lên được cài đặt trên PC của bạn. Về mặt kỹ thuật, Goutte là một trình bao bọc bao quanh các thành phần của Symphony như DomCrawler, BrowserKit, CssSelector và thành phần máy khách Guzzle HTTP. Điều kiện tiên quyết để cài đặt Goutte là bạn cần tải xuống và cài đặt Trình soạn thảo là trình quản lý gói cho PHP

Cài đặt Trình soạn thảo

Nhấn vào đây để tải về nhà soạn nhạc

Khi Trình soạn thảo được cài đặt, bạn cần cài đặt Goutte bằng trình soạn thảo. Thực hiện lệnh sau để tải xuống và cài đặt Guzzle trước vì Goutte phụ thuộc vào Guzzle

composer require guzzlehttp/guzzle

Sau đó, bạn cần cài đặt Goutte bằng lệnh sau

composer require fabpot/goutte

Tiếp theo, bạn phải cài đặt thêm một thư viện có tên là Masterminds. Sử dụng lệnh sau để cài đặt Masterminds

composer require masterminds/html5

Sau khi cài đặt 3 thư viện trên, các phụ thuộc sẽ được cập nhật tự động trong tệp

$html = file_get_html(‘https://www.imdb.com/title/tt2015381/reviews?ref_=tt_urv‘, false);
2. Nó phải tương tự như đoạn mã sau

{
   "require": {
       "guzzlehttp/guzzle": "^7.2",
       "fabpot/goutte": "^4.0",
       "masterminds/html5": "^2.7"
   }
}

Xây dựng Scraper

Sau khi cài đặt hoàn tất, tạo một tệp mới có tên là Goutte_scraper. php. Sau đó bật Tự động tải sẽ tải tất cả các tệp được yêu cầu cho dự án/ứng dụng của bạn. Thêm dòng mã sau vào đầu tập lệnh của bạn để bật Tự động tải

0

Bây giờ bạn cần tạo một phiên bản của ứng dụng khách Goutte. Chạy đoạn mã sau để tạo phiên bản máy khách Goutte có tên là

$html = file_get_html(‘https://www.imdb.com/title/tt2015381/reviews?ref_=tt_urv‘, false);
3

2

Sau đó, bạn có thể thực hiện các yêu cầu HTTP bằng phương thức request() như bên dưới. Phương thức request() trả về một đối tượng trình thu thập thông tin. Bạn sẽ sử dụng cùng một trang web đã được sử dụng để quét bằng trình phân tích cú pháp HTML DOM đơn giản. Nhưng lần này bạn sẽ chỉ cạo tiêu đề của bài đánh giá

URL của trang web là, https. //www. imdb. com/title/tt2015381/reviews?ref=tt_urv và bộ chọn lớp CSS của tiêu đề đánh giá mà bạn sẽ trích xuất là title

Trước tiên, bạn cần lấy trang web bằng yêu cầu HTTP GET. Đối với điều đó, bao gồm đoạn mã sau trong tập lệnh

3

Sau đó, sử dụng các dòng mã sau để trích xuất tiêu đề đánh giá

4

Tập lệnh hoàn chỉnh phải giống với đoạn mã sau

Xem mã trên Gist

Đoạn script trên sẽ tạo ra một đầu ra tương tự như ảnh chụp nhanh sau

Bộ công cụ quét web hoàn chỉnh cho PHP
Bộ công cụ quét web hoàn chỉnh cho PHP

Cuối cùng, bạn đã triển khai thành công trình quét web bằng thư viện Goutte và Guzzle

Sự kết luận

Quét web là một khía cạnh phổ biến của phát triển phụ trợ. PHP có hỗ trợ rất lớn cho các công cụ và thư viện được sử dụng để trích xuất dữ liệu là một trong những ngôn ngữ phát triển phụ trợ tốt nhất. Thật khó để chỉ ra cái nào là tốt nhất trong số các công cụ và thư viện đó vì mỗi công cụ và thư viện đều có các trường hợp sử dụng, ưu điểm và nhược điểm riêng. Do đó, bạn nên cẩn thận khi chọn công cụ hoặc thư viện phù hợp để cạo vì nó phụ thuộc vào yêu cầu của bạn

Bạn có thể quét web bằng PHP không?

Tìm kiếm web cho phép bạn thu thập dữ liệu từ các trang web trên internet. Nó còn được gọi là thu thập dữ liệu web hoặc khai thác dữ liệu web. PHP là ngôn ngữ kịch bản phụ trợ được sử dụng rộng rãi để tạo các trang web và ứng dụng web động. Và bạn có thể triển khai trình quét web bằng mã PHP đơn giản .

Cạo dữ liệu trong laravel là gì?

Tìm kiếm trên web với Laravel. Quét web là gì? . Trên đây là định nghĩa chung. a process where the data is present in the Html format and we filter out the required data and persist it. The above is a general definition.

Quét web là gì?

Tìm kiếm web là quá trình sử dụng bot để trích xuất nội dung và dữ liệu từ một trang web . Không giống như quét màn hình, chỉ sao chép các pixel được hiển thị trên màn hình, quét web trích xuất mã HTML cơ bản và cùng với đó là dữ liệu được lưu trữ trong cơ sở dữ liệu. Sau đó, trình cạp có thể sao chép toàn bộ nội dung trang web ở nơi khác.

Làm thế nào để bạn sử dụng cạo dữ liệu trong Python?

Để trích xuất dữ liệu bằng cách sử dụng quét web với python, bạn cần làm theo các bước cơ bản sau. .
Tìm URL mà bạn muốn cạo
Kiểm tra trang
Tìm dữ liệu bạn muốn trích xuất
Viết mã
Chạy mã và giải nén dữ liệu
Lưu trữ dữ liệu ở định dạng cần thiết