Selecionar raspar sua maneira em RSS

| by Dennis Pallett | December 11, 2004
Introdução

RSS é um as tecnologias as mais quentes neste momento, e mesmo os publishers grandes da correia fotorreceptora (tais como os tempos de New York) estão começando em RSS também. Entretanto, há uns muitos imóveis dos Web site que não têm alimentações de RSS.

Se você quiser ainda verificam aqueles Web site em seu aggregator do favorito, você necessitam criar sua própria alimentação de RSS para aqueles Web site. Isto pode ser feito automaticamente com PHP, usando um método chamado desfazer-se da tela. Desfazer-se da tela frowned geralmente upon, porque é usado na maior parte roubar o índice de outros Web site.

Eu acredito pessoalmente aquele neste caso, para gerar automaticamente uma alimentação de RSS, desfazer-se da tela não sou uma coisa má. Agora, sobre ao código!

Começando o índice

Para este artigo, nós usaremos PHPit como um exemplo, apesar do fato que PHPit tem já alimentações de RSS (http://www.phpit.net/syndication/).

Nós quereremos gerar uma alimentação de RSS do índice alistado no frontpage (http://www.phpit.net). A primeira etapa em raspar da tela está começando a página completa. Em PHP isto pode ser feito muito fàcilmente, usando-se implode (lima ("", “[o URL aqui]”)); SE seu anfitrião da correia fotorreceptora o permitir. Se você não puder usar a lima () você terá que usar um método diferente de começar a página, por exemplo usando a biblioteca da ONDA (http://www.php.net/curl).

Agora que nós temos o disponível satisfeito, nós podemos analisá-lo gramaticalmente para o índice usando algumas expressões regulares. A chave a raspar da tela estão procurando os testes padrões que combinam o índice, por exemplo são todos os artigos satisfeitos envolvidos nos <div> ou algo outros? Se você puder com sucesso descobrir um teste padrão, então você pode usar o preg_match_all () começar todos os artigos satisfeitos.

Para PHPit, o teste padrão que combina o índice é class= " contentitem " do <div > [índice aqui] <div>. Você pode verificar o este você mesmo indo à página principal de PHPit, e vendo a fonte.

Agora que nós temos um fósforo nós podemos começar todos os artigos satisfeitos. A etapa seguinte é recuperar a informação individual, isto é URL, título, autor, texto. Isto pode ser feito usando alguns expressão e str_replace mais regulares () no cada artigos satisfeitos.

Agora pelos nós temos o seguinte código; <? php//começam page$url = “http://www.phpit.net/”; $data = implode ("", lima ($url)); // começa o itemspreg_match_all satisfeito (de” class= “contentitem/<div “> ([o `do ^] *?)< /div>/”, $data, $matches);

Como eu disse, a etapa seguinte é recuperar a informação individual, mas primeiramente vamos fazer um começo em nossa alimentação, ajustando o encabeçamento apropriado (texto/xml) e imprimindo a informação da canaleta, etc. // começam o feedheader (“Índice-Tipo: texto/xml; charset=ISO-8859-1”); eco “<? version= do xml “1.0 ” encoding= “ISO-8859-1 ”? > n ";? version= dos ><rss " 2.0 " xmlns: xmlns de " http://purl.org/dc/elements/1.1/ " do dc=: xmlns de " http://purl.org/rss/1.0/modules/content/ " do content=: xmlns de " http://webns.net/mvcb/ " do admin=: rdf= " http://www.w3.org/1999/02/22-rdf-syntax-ns # " > o índice o mais atrasado Content</title> do <channel> do <description>The o mais atrasado do <title>PHPit de PHPit (tela de http://www.phpit.net), raspada! <link> http://www.phpit.net </link> <language>en-us</language>< de </description>?

Agora é hora de dar laços através dos artigos, e imprime seu RSS XML. Nós damos laços primeiramente através de cada artigo, e começamos toda a informação que nós começamos, usando umas expressões e um preg_match mais regulares (). Em seguida que o RSS para o artigo é printed.<? o laço de php//através de cada itemforeach satisfeito ($matches [0] como $match) {// primeiramente, começa o preg_match do título (“/ “> ([o `do ^] *?)< /a>< /h3>/”, $match, $temp); $title = $temp [“1”]; $title = strip_tags ($title); $title = guarnição ($title); // em segundo, começa o preg_match do URL (de” href=/<a “([o `do ^] *?) “>/”, $match, $temp); $url = $temp [“1”]; $url = guarnição ($url); // terceiro, começa o preg_match do texto (”/<p> ([o `do ^] *?)class= “byline “>/”, $match, $temp <span); $text = $temp [“1”]; $text = guarnição ($text); // quarto, e finalmente, começa o preg_match do autor (de” class= “byline “>By/<span ([o `do ^] *?)< /span>/”, $match, $temp); $author = $temp [“1”]; $author = guarnição ($author); Eco “<item> do eco RSS XML de // n”; ” do eco t t t<title> ". strip_tags ($title). “</title> n”; ” do eco t t t<link> http://www.phpit.net ". strip_tags ($url). “</link> n”; ” do eco t t t<description> ". strip_tags ($text). “</description> n”; ” do eco t t t<content: encoded><! [CDATA [ n "; eco $text. “ n”; eco”]] ></content: encoded> n "; “do eco t t t<dc: creator>”. strip_tags ($author). “</dc: creator> n”; ” do eco t t</item> n ";}? >

E finalmente, a lima de RSS é fechada fora. </channel></rss>

Aquele é todo. Se você unir todo o código, como no certificado do programa demostrativo, a seguir no você comerá uma alimentação perfeita de RSS.

Conclusão

Neste tutorial eu tenho-o mostrado como criar uma alimentação de RSS de um Web site que não tenha uma alimentação ela mesma de RSS ainda. Embora a expressão regular é diferente para cada Web site, o princípio é exatamente o mesmo.

Uma coisa que eu devo mencionar é que você não deve imediatamente selecionar o scrape índice de um Web site. E-mail eles primeiramente sobre uma alimentação de RSS. Quem sabe, pôde ajustar um acima dse, e aquele seria mesmo melhor.

Certificado da amostra do Download em http://www.phpit.net/viewsource.php?url=/demo/screenscrape%20rss/example.php

Article Source: http://www.articleset.com



About the Author

Dennis Pallett is a young tech writer, with much experience in ASP, PHP and other web technologies. He enjoys writing, and has written several articles and tutorials. To find more of his work, look at his websites at http://www.phpit.net, http://www.aspit.net and http://www.ezfaqs.com. » Read more articles by Dennis Pallett
You are welcome to publish or reprint this article free of charge, provided: