Hướng dẫn cơ bản về bò web PHP - Goutte - f88 bóng đá

/imgposts/eeurpqm7.jpg

Mặc dù tôi đã viết các chương trình bò web bằng Python trong nhiều năm, nhưng gần đây tôi càng muốn thử nghiệm việc viết một bò web bằng PHP.

  • Đã mệt mỏi với cách quản lý gói của Python
  • Scrapy quá phức tạp cho những bò web nhỏ
  • ORM của Python so với Eloquent của PHP Laravel giống như chỉ là sản phẩm chưa hoàn thiện

Tất nhiên Scrapy cũng có những chức năng không thể thay thế

  • Console gỡ lỗi, không gì sánh được. Even Chrome console XPath?

Goutte trông khá hứa hẹn, nhưng mức độ hoạt động lại quá thấp, cả năm cũng chỉ có vài lần commit. Tuy nhiên, các tính năng chính của nó dựa trên hai thư viện BrowserKit và DomCrawler. Hai thư viện này vẫn còn tương đối hoạt động mạnh mẽ.

  • goutte - bệnh gút
  • guzzle - uống say (guzzle là một thư f88 bóng đá viện HTTP của PHP)

Uống rượu casino quá chén đánh bài online dẫn đến bệnh gút... Quá tuyệt vời! Tên Goutte thật sự được đặt rất thú vị...

composer require fabpot/goutte

Sau khi cài đặt Goutte, hãy viết mã logic:

<?php
require __DIR__ . '/vendor/autoload.php';
use Goutte\Client;
$client = new Client();
$crawler = $client->request('GET', '
$crawler->filter('h1')->each(function ($node) {
    print $node->text()."\n";
});

Kết quả chạy

% php go.php
Trang Ghi chú Voi

"GET / HTTP/1.1" 200 34881 "-" "Symfony BrowserKit"

Ví dụ, khi cần thu thập cảm nhận thực tế, PHP thực sự làm việc này khá khó khăn. Hãy xem xét ví dụ sau:

  • Khi thuộc tính đối tượng không rõ ràng, không tiện lợi như hàm dir của Python
  • Loại bỏ kết quả trùng lặp, với Python chỉ cần một dòng set, còn PHP...

Sau khi thử nghiệm, tôi quyết định tiếp tục sử dụng python requests + beautifulsoup.