Как я могу получить HTML-код веб-страницы на PHP? - PullRequest
76 голосов
/ 04 мая 2009

Я хочу получить HTML-код ссылки (веб-страницы) в PHP. Например, если ссылка

https://stackoverflow.com/questions/ask

тогда я хочу HTML-код страницы, которая обслуживается. Я хочу получить этот HTML-код и сохранить его в переменной PHP.

Как я могу это сделать?

Ответы [ 9 ]

116 голосов
/ 04 мая 2009

Если ваш PHP-сервер поддерживает упаковщики URL-адресов, то самый простой способ:

$html = file_get_contents('http://stackoverflow.com/questions/ask');

Если вам нужно больше контроля, тогда вам стоит взглянуть на функции cURL :

$c = curl_init('http://stackoverflow.com/questions/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);
19 голосов
/ 04 мая 2009

Также, если вы хотите как-то манипулировать полученной страницей, вы можете попробовать какой-нибудь php DOM-парсер. Я нахожу PHP Simple HTML DOM Parser очень простым в использовании.

12 голосов
/ 04 мая 2009

Вы можете проверить библиотеки YQL от Yahoo: http://developer.yahoo.com/yql

Задача под рукой так же проста, как и

select * from html where url = 'http://stackoverflow.com/questions/ask'

Вы можете попробовать это в консоли по адресу: http://developer.yahoo.com/yql/console (требуется логин)

Также см. Скринкаст Криса Хейлманна для некоторых хороших идей, что еще вы можете сделать: http://developer.yahoo.net/blogs/theater/archives/2009/04/screencast_collating_distributed_information.html

9 голосов
/ 04 мая 2009

Простой способ: Использование file_get_contents():

$page = file_get_contents('http://stackoverflow.com/questions/ask');

Обратите внимание, что allow_url_fopen должно быть true в вас php.ini, чтобы иметь возможность использовать упаковщики fopen с поддержкой URL.

Более продвинутый способ: Если вы не можете изменить конфигурацию PHP, allow_url_fopen по умолчанию false, и если установлена ​​ext / curl, используйте библиотеку cURL подключиться к нужной странице.

3 голосов
/ 27 января 2013

вы можете использовать file_get_contents, если вы хотите сохранить исходный код как переменную, однако curl - лучший способ.

$url = file_get_contents('http://example.com');
echo $url; 

это решение будет отображать веб-страницу на вашем сайте. Однако скручиваемость является лучшим вариантом.

2 голосов
/ 04 мая 2009

посмотрите на эту функцию:

http://ru.php.net/manual/en/function.file-get-contents.php

1 голос
/ 18 декабря 2013
include_once('simple_html_dom.php');
$url="http://stackoverflow.com/questions/ask";
$html = file_get_html($url);

Используя этот код, вы можете получить весь HTML-код в виде массива (в разобранном виде) Загрузите файл 'simple_html_dom.php' здесь http://sourceforge.net/projects/simplehtmldom/files/simple_html_dom.php/download

1 голос
/ 03 апреля 2013

Вот два разных простых способа получить контент с URL :

1) первый метод

Включить Allow_url_include с вашего хостинга (php.ini или где-то еще)

<?php
$variableee = readfile("http://example.com/");
echo $variableee;
?> 

или

2) второй метод

Включить php_curl, php_imap и 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;
?>
0 голосов
/ 11 декабря 2018

вы можете использовать метод DomDocument, чтобы получить отдельную переменную уровня тега HTML

$homepage = file_get_contents('https://www.example.com/');
$doc = new DOMDocument;
$doc->loadHTML($homepage);
$titles = $doc->getElementsByTagName('h3');
echo $titles->item(0)->nodeValue;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...