2012-03-21 15 views
6

Tôi đang tìm cách tạo một bản xem trước nhỏ của trang khác từ URL do người dùng cung cấp trong PHP.Web cào trong PHP

Tôi muốn chỉ lấy tiêu đề của trang, hình ảnh (như biểu trưng của trang web) và một chút văn bản hoặc mô tả nếu nó có sẵn. Có cách nào đơn giản để làm điều này mà không có bất kỳ thư viện/lớp học bên ngoài? Cảm ơn

Cho đến nay tôi đã cố gắng sử dụng các lớp DOCDocument, tải HTML và hiển thị nó trên màn hình, nhưng tôi không nghĩ đó là cách thích hợp để làm điều đó

+1

Có. Có. Bạn đã googled? Bạn đã thử bất cứ điều gì cả? –

+1

Có, tôi sẽ không hỏi ở đây nếu tôi không – federicot

+1

Vì vậy ... bạn đã thử những gì? –

Trả lời

14

Tôi khuyên bạn nên xem xét simple_html_dom cho việc này. Nó sẽ làm cho nó rất dễ dàng.

Dưới đây là ví dụ làm việc về cách kéo tiêu đề và hình ảnh đầu tiên.

<?php 
require 'simple_html_dom.php'; 

$html = file_get_html('http://www.google.com/'); 
$title = $html->find('title', 0); 
$image = $html->find('img', 0); 

echo $title->plaintext."<br>\n"; 
echo $image->src; 
?> 

Đây là ví dụ thứ hai sẽ thực hiện tương tự mà không cần thư viện bên ngoài. Tôi nên lưu ý rằng việc sử dụng regex trên HTML KHÔNG phải là một ý tưởng hay.

<?php 
$data = file_get_contents('http://www.google.com/'); 

preg_match('/<title>([^<]+)<\/title>/i', $data, $matches); 
$title = $matches[1]; 

preg_match('/<img[^>]*src=[\'"]([^\'"]+)[\'"][^>]*>/i', $data, $matches); 
$img = $matches[1]; 

echo $title."<br>\n"; 
echo $img; 
?> 
+0

Cảm ơn bạn đã trả lời. Tôi nghĩ rằng tôi sẽ dính vào thư viện HTML Pars Parser đơn giản sau đó, vì mọi người sẽ giới thiệu nó – federicot

2

Bạn có thể sử dụng SimpleHtmlDom cho việc này. và sau đó tìm tiêu đề và thẻ img hoặc những gì bạn cần làm.

+1

Một trong những thư viện của bên thứ ba tốt nhất mà tôi từng sử dụng. Rất khuyên bạn nên nó. – cchana