Tôi muốn truy xuất mã HTML của một liên kết (trang web) bằng PHP. Ví dụ: nếu liên kết là
thì tôi muốn mã HTML của trang được phân phát. Tôi muốn truy xuất mã HTML này và lưu trữ nó trong một biến PHP.
Tôi có thể làm cái này như thế nào?
Tôi muốn truy xuất mã HTML của một liên kết (trang web) bằng PHP. Ví dụ: nếu liên kết là
thì tôi muốn mã HTML của trang được phân phát. Tôi muốn truy xuất mã HTML này và lưu trữ nó trong một biến PHP.
Tôi có thể làm cái này như thế nào?
Câu trả lời:
Nếu máy chủ PHP của bạn cho phép trình bao bọc fopen url thì cách đơn giản nhất là:
$html = file_get_contents('/programming/ask');
Nếu bạn cần kiểm soát nhiều hơn thì bạn nên xem các hàm cURL :
$c = curl_init('/programming/ask');
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
//curl_setopt(... other options you want...)
$html = curl_exec($c);
if (curl_error($c))
die(curl_error($c));
// Get the status code
$status = curl_getinfo($c, CURLINFO_HTTP_CODE);
curl_close($c);
Ngoài ra, nếu bạn muốn thao tác trang đã truy xuất bằng cách nào đó, bạn có thể muốn thử một số trình phân tích cú pháp DOM php. Tôi thấy PHP Simple HTML DOM Parser rất dễ sử dụng.
Bạn có thể muốn xem các thư viện YQL từ Yahoo: http://developer.yahoo.com/yql
Nhiệm vụ trong tầm tay đơn giản như
select * from html where url = 'http://stackoverflow.com/questions/ask'
Bạn có thể thử điều này trong bảng điều khiển tại: http://developer.yahoo.com/yql/console (yêu cầu đăng nhập)
Ngoài ra, hãy xem video màn hình của Chris Heilmanns để biết một số ý tưởng hay mà bạn có thể làm thêm: http://developer.yahoo.net/blogs/theater/archives/2009/04/screencast_collating_distributed_information.html
Cách đơn giản: Sử dụng file_get_contents()
:
$page = file_get_contents('http://stackoverflow.com/questions/ask');
Hãy lưu ý rằng allow_url_fopen
phải có true
trong bạn php.ini
để có thể sử dụng giấy gói fopen URL-aware.
Cách nâng cao hơn: Nếu bạn không thể thay đổi cấu hình PHP của bạn, allow_url_fopen
là false
theo mặc định và nếu ext / curl được cài đặt, sử dụng các cURL
thư viện để kết nối với các trang mong muốn.
bạn có thể sử dụng file_get_contents nếu bạn muốn lưu trữ nguồn dưới dạng một biến, tuy nhiên curl là cách thực hành tốt hơn.
$url = file_get_contents('http://example.com');
echo $url;
giải pháp này sẽ hiển thị trang web trên trang web của bạn. Tuy nhiên xoăn là một lựa chọn tốt hơn.
nhìn vào chức năng này:
http://ru.php.net/manual/en/ Chức năng.file-get-contents.php
include_once('simple_html_dom.php');
$url="http://stackoverflow.com/questions/ask";
$html = file_get_html($url);
Bạn có thể lấy toàn bộ mã HTML dưới dạng một mảng (dạng được phân tích cú pháp) bằng cách sử dụng mã này Tải xuống tệp 'simple_html_dom.php' tại đây http://sourceforge.net/projects/simplehtmldom/files/simple_html_dom.php/download
Đây là hai cách đơn giản khác nhau để lấy nội dung từ URL :
1) phương pháp đầu tiên
Bật Allow_url_include từ máy chủ của bạn (php.ini hoặc một nơi nào đó)
<?php
$variableee = readfile("http://example.com/");
echo $variableee;
?>
hoặc là
2) phương pháp thứ hai
Bật php_curl, php_imap và php_openssl
<?php
// you can add anoother curl options too
// see here - http://php.net/manual/en/function.curl-setopt.php
function get_dataa($url) {
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$variableee = get_dataa('http://example.com');
echo $variableee;
?>
bạn cũng có thể sử dụng phương pháp DomDocument để nhận một biến cấp độ thẻ HTML riêng lẻ
$homepage = file_get_contents('https://www.example.com/');
$doc = new DOMDocument;
$doc->loadHTML($homepage);
$titles = $doc->getElementsByTagName('h3');
echo $titles->item(0)->nodeValue;
Tôi đã thử mã này và nó phù hợp với tôi.
$html = file_get_contents('www.google.com');
$myVar = htmlspecialchars($html, ENT_QUOTES);
echo($myVar);