Загрузка HTML-страницы и изменение раздела - PullRequest
1 голос
/ 01 сентября 2009

Мне нужно загрузить на свой сайт внешнюю веб-страницу (не локальную) (некоторая ссылка), но только ее часть. Какие есть варианты для этого?

Ответы [ 4 ]

1 голос
/ 01 сентября 2009

Это зависит от того, является ли внешняя страница локальной или другой домен. Если он локальный, вы можете использовать $ .load () в библиотеке jQuery. У этого есть необязательный параметр, чтобы указать, какой элемент в удаленном домене загружать его:

$("#links").load("/Main_Page #jq-p-Getting-Started li");

Если страница находится в другом домене, вам понадобится прокси-скрипт. Вы можете сделать это с помощью PHP и библиотеки phpQuery (php port of jQuery). Вы просто будете использовать file_get_contents (), чтобы получить фактическое имя удаленного домена, а затем вытащите нужные элементы на основе jQuery-подобных селекторов.

0 голосов
/ 01 сентября 2009

Как только вы получите всю страницу, как обрисовал в общих чертах Майкл Тодд, вам, скорее всего, придется либо использовать методы подстроки для статических средств, чтобы разделить контент, либо использовать регулярные выражения для более динамичного способа захвата контента. Вступительную статью о Regex в ASP.Net можно найти здесь . Удачи!

0 голосов
/ 01 сентября 2009

Чтобы загрузить веб-страницу в .Net, используйте класс HttpWebRequest.

Пример взят из MSDN, здесь :

    private string StringGetWebPage(String uri)
    {
        const int bufSizeMax = 65536; // max read buffer size conserves memory
        const int bufSizeMin = 8192;  // min size prevents numerous small reads
        StringBuilder sb;

        // A WebException is thrown if HTTP request fails
        try 
        {
            // Create an HttpWebRequest using WebRequest.Create (see .NET docs)!
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);

            // Execute the request and obtain the response stream
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream responseStream = response.GetResponseStream();

            // Content-Length header is not trustable, but makes a good hint.
            // Responses longer than int size will throw an exception here!
            int length = (int)response.ContentLength;

            // Use Content-Length if between bufSizeMax and bufSizeMin
            int bufSize = bufSizeMin;
            if (length > bufSize)
                bufSize = length > bufSizeMax ? bufSizeMax : length;

            // Allocate buffer and StringBuilder for reading response
            byte[] buf = new byte[bufSize];
            sb = new StringBuilder(bufSize);

            // Read response stream until end
            while ((length = responseStream.Read(buf, 0, buf.Length)) != 0)
                sb.Append(Encoding.UTF8.GetString(buf, 0, length));

        }
        catch (Exception ex)
        {
            sb = new StringBuilder(ex.Message);
        }

        return sb.ToString();
}

Обратите внимание, что это вернет всю страницу , а не только ее часть Затем вам нужно будет пролистать страницу, чтобы найти информацию, которую вы ищете.

0 голосов
/ 01 сентября 2009
$f = fopen('http://www.quran.az/2/255', 'r');

и так далее ...

...