Phương thức Mô tả $e->children ( [int $index] ) Trả về đối tượng con thứ N nếu chỉ mục được đặt, nếu không thì trả về một mảng con. $e->parent() Trả về phần tử cha của phần tử. $e->first_child() Trả về phần tử con đầu tiên, hoặc null nếu không tìm thấy. $e->last_child() Trả về phần tử con cuối cùng hoặc null nếu không tìm thấy. $e->next_sibling () Trả về anh chị em tiếp theo của phần tử hoặc null nếu không tìm thấy. $e->prev_sibling () Trả về anh chị em trước đó của phần tử hoặc null nếu không tìm thấy
Bạn đã từng nghe nói đến thư viện này chưa? . Do đó để tích hợp vào Laravel chúng ta có thể sử dụng các cách sau đây
VD. Sử dụng PHP Simple HTML Dom Parser với Laravel
use Sunra\PhpSimple\HtmlDomParser;
...
$dom = HtmlDomParser::str_get_html( $str );
or
$dom = HtmlDomParser::file_get_html( $file_name );
$elems = $dom->find($elem_name);
Cài đặt thư viện Simple HTML Dom mới nhất + biên dịch với phiên bản php 7, 8
Gói PHP Simple HTML Dom Parser ở trên phiên bản không tương thích PHP 7,8, nếu bạn sử dụng phiên bản PHP 7,8 thì có thể tham khảo cách này
Đầu tiên các bạn vào trang web này để tải xuống tệp simple_html_dom. php để vào thư mục Helpers of laravel không giới hạn (thư mục mình tự tạo ra, bạn có thể bỏ qua bất kỳ thư mục nào bạn muốn). sau đó mở file composer. json ra và thêm đường dẫn tệp vừa tạo vào phần tự động tải
Trong hướng dẫn này, chúng ta sẽ xem xét Trình phân tích cú pháp DOM HTML đơn giản của PHP so sánh với Goutte FriendsOfPHP mạnh mẽ như thế nào. Trong những ngày đầu, Trình phân tích cú pháp DOM HTML đơn giản của PHP là tất cả những gì chúng tôi phải làm việc liên quan đến việc trích xuất dữ liệu từ HTML. Bây giờ chúng ta đã có FriendsOfPHP Goutte, có nhiều tính năng phong phú hơn để thực hiện loại công việc này. Trước khi bắt đầu, bạn sẽ cần định cấu hình một số thứ để thiết lập và chạy PHP Simple HTML DOM Parser, FriendsOfPHP Goutte và Guzzle PHP HTTP client. Điều này cực kỳ dễ thực hiện nhờ Composer. Tạo một thư mục trên máy tính của bạn có tên là guzzle. CD vào thư mục đó và đặt
3 vào đây và kiểm tra bất kỳ mã nào chúng tôi thảo luận trong hướng dẫn này. bản soạn sẵn của bạn trong chỉ mục. php sẽ trông giống như thế này, đảm bảo đừng quên yêu cầu tệp tự động tải mà trình soạn thảo tạo cho bạn
Chúng tôi thiết lập điều này để bạn không gặp phải bất kỳ lỗi nào như “lỗi cURL 60. Sự cố chứng chỉ SSL. không thể lấy chứng chỉ nhà phát hành địa phương”. Nếu bạn không thiết lập ứng dụng khách của mình như trên, bạn có thể gặp các lỗi này
Nhận phần tử HTML
Nhận các phần tử HTML (Trình phân tích cú pháp DOM HTML đơn giản của PHP)
Khi bạn bắt đầu với Trình phân tích cú pháp DOM HTML đơn giản của PHP, họ sẽ yêu cầu bạn làm điều gì đó như thế này. Trong trường hợp này, bạn lưu trữ một số HTML vào một biến, sau đó tìm giá trị của thuộc tính src của tất cả các thẻ hình ảnh, cùng với việc tìm giá trị của tất cả các thuộc tính href của bất kỳ liên kết nào trên trang
// Create DOM from URL or file
$html = file_get_html('https://www.facebook.com');
// Find all images
foreach ($html->find('img') as $element) {
echo $element->src . ' ';
}
// Find all links
foreach ($html->find('a') as $element) {
echo $element->href . ' ';
}
Nhận các phần tử HTML (FriendsOfPHP Goutte)
// Make a GET request (Create DOM from URL or file)
$crawler = $client->request('GET', 'https://www.facebook.com');
// Filter the DOM by calling an anonymous function on each node (Find all images)
$crawler->filter('img')->each(function ($node) {
echo $node->attr('src') . ' ';
});
// (Find all links)
$crawler->filter('a')->each(function ($node) {
echo $node->attr('href') . ' ';
});
Như chúng ta thấy ở trên, Thư viện trình phân tích cú pháp DOM HTML đơn giản của PHP sử dụng phương thức
7 Loại trả lại có thể thay đổi. Tìm các phần tử bằng bộ chọn CSS. Trả về đối tượng phần tử thứ N nếu chỉ mục được đặt, nếu không thì trả về một mảng đối tượng.
7 Luôn trả về phiên bản Trình thu thập thông tin công khai. Lọc danh sách các nút bằng bộ chọn CSS
ghi chú. Phương thức find() thay đổi tùy thuộc vào những gì nó trả về cho bạn dựa trên các tham số bạn truyền vào cho nó. Điều này đôi khi có thể dẫn đến nhầm lẫn. Mặt khác, phương thức filter() luôn trả về một phiên bản Symfony Crawler.
Sửa đổi phần tử HTML
Sửa đổi các phần tử HTML (Trình phân tích cú pháp DOM HTML đơn giản của PHP)
$html = file_get_html('https://httpbin.org');
foreach ($html->find('title') as $element) {
echo $element->plaintext;
// httpbin(1): HTTP Client Testing Service
}
$html->find('title', 0)->innertext = 'Made with PHP Simple HTML DOM Parser!';
foreach ($html->find('title') as $element) {
echo $element->plaintext;
// Made with PHP Simple HTML DOM Parser!
}
Sửa đổi phần tử HTML (FriendsOfPHP Goutte)
FriendsOfPHP Goutte thực sự khuyên không nên sửa đổi DOM bằng phần mềm của họ
Mặc dù có thể, thành phần DomCrawler không được thiết kế để thao tác DOM hoặc kết xuất lại HTML/XML
Do đó, chúng tôi sẽ không cố gắng sửa đổi DOM, nhưng đây là cách bạn tìm nạp tiêu đề như trên với Goutte
Những thứ khá đơn giản ở đây. Như chúng ta có thể thấy, các phiên bản Goutte của FriendsOfPHP thường có cú pháp hiện đại và thanh lịch hơn một chút nhờ vào việc sử dụng chức năng của chúng, điều này giúp dễ dàng lặp lại mọi phần tử bằng chức năng ẩn danh
Cách tìm phần tử HTML
Thực sự cốt lõi của cách các thư viện này hoạt động là nhờ khả năng tìm nạp các phần tử từ DOM bằng cách sử dụng Bộ chọn CSS tiêu chuẩn. Ở đây, chúng tôi kiểm tra hầu hết tất cả các bộ chọn CSS có sẵn, ngoại trừ những bộ chọn chỉ có ý nghĩa trong ngữ cảnh của một trình duyệt web thực tế. Nếu bạn không thấy một bộ chọn cụ thể trong bảng này, điều đó có nghĩa là nó không hoạt động trong cả hai thư viện. Khi thử nghiệm tất cả các bộ chọn này, chúng tôi nhận thấy rằng Goutte có bộ tùy chọn lựa chọn CSS lớn hơn và giàu tính năng hơn. Bạn có thể sử dụng danh sách tham chiếu này của các bộ chọn CSS hoạt động với Goutte và DOM HTML đơn giản
Kiểm tra bộ chọn CSS trên phương pháp 1 của 60,
'verify' => false,
]);
// Hackery to allow HTTPS
$client->setClient($guzzleclient);5. Phương pháp Goutte và 60,
'verify' => false,
]);
// Hackery to allow HTTPS
$client->setClient($guzzleclient);4 của 2. Trình phân tích cú pháp Dom HTML đơn giản
Selector FormatExampleExample description12.class
// Create DOM from URL or file
$html = file_get_html('https://www.facebook.com');
// Find all images
foreach ($html->find('img') as $element) {
echo $element->src . ' ';
}
// Find all links
foreach ($html->find('a') as $element) {
echo $element->href . ' ';
}
2Selects all elements with class=”bash”YesYes#id
// Create DOM from URL or file
$html = file_get_html('https://www.facebook.com');
// Find all images
foreach ($html->find('img') as $element) {
echo $element->src . ' ';
}
// Find all links
foreach ($html->find('a') as $element) {
echo $element->href . ' ';
}
3Selects the element with id=”manpage”YesYes*
// Create DOM from URL or file
$html = file_get_html('https://www.facebook.com');
// Find all images
foreach ($html->find('img') as $element) {
echo $element->src . ' ';
}
// Find all links
foreach ($html->find('a') as $element) {
echo $element->href . ' ';
}
4Selects all elementsYesYeselement
// Create DOM from URL or file
$html = file_get_html('https://www.facebook.com');
// Find all images
foreach ($html->find('img') as $element) {
echo $element->src . ' ';
}
// Find all links
foreach ($html->find('a') as $element) {
echo $element->href . ' ';
}
5Selects all
elementsYesYeselement, element
// Create DOM from URL or file
$html = file_get_html('https://www.facebook.com');
// Find all images
foreach ($html->find('img') as $element) {
echo $element->src . ' ';
}
// Find all links
foreach ($html->find('a') as $element) {
echo $element->href . ' ';
}