[RSS] Feed maken van bestaande site

Pagina: 1
Acties:
  • 181 views sinds 30-01-2008
  • Reageer

  • slaay
  • Registratie: September 2001
  • Laatst online: 05-05 17:13

slaay

Natuurbeleven.com

Topicstarter
Voor mijn website ben ik bezig met een statuspagina van alle KPN ADSL providers.
Helaas biedt alleen Xs4all een rss feed aan. Nu kwam ik tot het volgende idee voor providers die geen rss feed aanbieden:
- linux server haalt middels wget siteprovider.ext -O/var/www/site/provider.html statuspagina op
- een script zoekt in de html pagina na unieke zaken, zodat het script weet wat uit de pagina verwijdert kan worden
- nadat de pagina "schoon" gemaakt is, xml tags plaatsen op voor gedefinieerde plaatsen
- pagina opslaan en publiceren

Nu is mijn vraag, heeft er iemand ervaring met een bestaande site die niet van jou is om te zetten zodat de site geschikt wordt voor rss feed?
Is mijn idee uit te voeren? Ik kan het proberen, maar als jullie zeggen, het zal niet gaan werken, of dit moet lukken, dan kom ik toch alweer een stuk verder!

Dich bis echt unne foëzen haas


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 23:36

gorgi_19

Kruimeltjes zijn weer op :9

Hoe bepaal je wat unieke zaken zijn? :) En ik gok dat sites niet blij zijn als je frequent data op die manier gaat ophalen :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Dat moet prima gaan. Maar bouw wel even iets in waardoor je bijvoorbeeld maar eens in de 5 minuten een pagina opvraagt, dat is wel zo netjes.

In principe haal je gewoon een document op op een andere server, analyseer je dat document, en maak je zelf een RSS feed met de daaruit geëxtraheerde informatie.

Ik zou het alleen met een server-side taal maken, zoals PHP, in plaats van het met wget binnen te halen. Het kan wel hoor, maar ik zou dat niet doen.

  • slaay
  • Registratie: September 2001
  • Laatst online: 05-05 17:13

slaay

Natuurbeleven.com

Topicstarter
gorgi_19 schreef op zondag 17 april 2005 @ 13:18:
Hoe bepaal je wat unieke zaken zijn? :) En ik gok dat sites niet blij zijn als je frequent data op die manier gaat ophalen :)
Natuurlijk 1x per uur ofzo ;)

Dich bis echt unne foëzen haas


  • 0fbe
  • Registratie: Januari 2004
  • Laatst online: 08-05 10:20
Ik doe het met php voor me roosterwijgingen;

http://tim.cooijmansadvies.nl/rwbrss.php

  • slaay
  • Registratie: September 2001
  • Laatst online: 05-05 17:13

slaay

Natuurbeleven.com

Topicstarter
Zou je zo vriendelijk willen zijn om hier de code vrij te geven? Of desnoods per email te sturen?

Dich bis echt unne foëzen haas


  • chem
  • Registratie: Oktober 2000
  • Laatst online: 07-05 12:23

chem

Reist de wereld rond

Ik heb zelf een uurlijkse cron of 5 lopen voor sites die geen RSS aanbieden. De output gaat naar een statische xml file waar ik me vervolgens op subscribe.

Ik doe het gewoon met regexpjes, en dat werk eigenlijk perfect.

Klaar voor een nieuwe uitdaging.


  • 0fbe
  • Registratie: Januari 2004
  • Laatst online: 08-05 10:20
slaay schreef op zondag 17 april 2005 @ 13:33:
[...]


Zou je zo vriendelijk willen zijn om hier de code vrij te geven? Of desnoods per email te sturen?
Komt er aan,

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?php
header('content-type: text/xml');
$username = "leerling";
$password = "*********";
$file = "http://".$username.':'.$password."@www.gymnasiumbeekvliet.nl/hypertext/FMPro?-DB=Roosterwijzigingen.fp5&-Format=roosterwijzigingen.htm&-Lay=Formulier_web&Web_ja|nee=Ja&-SortField=Datum&-SortOrder=ascend&-SortField=Omschrijving&-SortOrder=ascend&-SortField=Roosterklassen::Klas&-SortOrder=ascend&-Error=fout.htm&-Find";
if($pagina = @file($file)){
$stuk ="";
foreach($pagina as $stuk){
$date .= $stuk;
}
$date = explode('<H1>Roosterwijzigingen</H1>', $date);
$date = str_replace('<TABLE cellspacing="0" cellpadding="0">' , '' , $date);
$date = str_replace('<TR valign="top"><TD>' , '<item><pubDate>' , $date);
$date = str_replace('&nbsp;&nbsp;&nbsp;</TD>' , ' 00:00:00 +0100</pubDate>' , $date);
$date = str_replace('-01-' , ' Jan ' , $date);
$date = str_replace('-02-' , ' Feb ' , $date);
$date = str_replace('-03-' , ' Mar ' , $date);
$date = str_replace('-04-' , ' Apr ' , $date);
$date = str_replace('-05-' , ' May ' , $date);
$date = str_replace('-06-' , ' Jun ' , $date);
$date = str_replace('-07-' , ' Jul ' , $date);
$date = str_replace('-08-' , ' Aug ' , $date);
$date = str_replace('-09-' , ' Sep ' , $date);
$date = str_replace('-10-' , ' Oct ' , $date);
$date = str_replace('-11-' , ' Nov ' , $date);
$date = str_replace('-12-' , ' Dec ' , $date);
$date = str_replace('<TD colspan="3">' , '<title>' , $date);
$date = str_replace('</TD></TR>' , '</title><description>' , $date);
$date = str_replace('<item><pubDate></TD><TD width="90"><I>' , '' , $date);
$date = str_replace(':&nbsp;</TD><TD>' , ' ' , $date);
$date = str_replace('<TR><TD><BR></title><description>' , '</description></item>' , $date);
$date = str_replace('</I></title><description>' , '' , $date);
$date = str_replace('</TABLE>' , '' , $date);
$date = str_replace('</BODY>' , '' , $date);
$date = str_replace('</HTML>' , '' , $date);
$date = str_replace('<br>' , ' ' , $date);
$date = ''.$date[1];
}else{
     $totaal = "Sorry, maar de site van Gymnasium Beekvliet is momenteel niet werkende, dus zul je helaas even geduld moeten hebben";
}
?>
<?php print '<?xml version="1.0" encoding="ISO-8859-15"?>' ?>

<rss version="2.0">

<channel>
<title>Roosterwijzigingen Beevliet</title>
<link>http://komtnog</link>
<description>De Roosterwijzigingen van Gymnasium Beevliet</description>

<?php
echo($date) 

?>

</channel>
</rss>

[ Voor 85% gewijzigd door 0fbe op 17-04-2005 13:38 ]


  • plakbandrol
  • Registratie: Juni 2002
  • Laatst online: 12-02 12:36
Ik heb ook een script gemaakt die een RSS feed maakt van tvgids.nl, deze wordt eerst in een SQL database gestopt, en vanuit daar kun je er alles mee doen, bijvoorbeeld RSS genereren.

Een parser zul je echt zelf moeten maken, elke pagina is namelijk anders. Ik kan wel even de code geven waarmee ik de pagina's van tvgids.nl parse, dan heb je een idee

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
function get_contents($id,$dag)
{
        $file = file_get_contents("http://www.tvgids.nl/detail.php?pid=$id");

        //naam opzoeken
            $start_pos = strpos($file,"detailContent2",0)+17;
            $end_pos = strpos($file,"</div>",$start_pos);
            $lengte_van_de_naam =  $end_pos - $start_pos;
            $naam = substr($file,$start_pos,$lengte_van_de_naam);
            $naam = explode("<BR>",$naam); 
            $naam = trim(ltrim($naam[0])); 
            $contents['naam'] = $naam;

        //tijdstip opzoeken                 
            $start_pos = strpos($file,"Tijdstip",0)+57;
            $end_pos = strpos($file,"</div>",$start_pos);
            $lengte_van_de_tijd =  $end_pos - $start_pos;
            $tijd = substr($file,$start_pos,$lengte_van_de_tijd);
    
             $datum = substr($tijd,0,10);
             $datum = explode("-",$datum);
             $datum[2] = substr($datum[2],0,4);
             
            $contents['tijd_start'] = $datum[2]."-".$datum[1]."-".$datum[0] . " ". substr($tijd,-15,5);
            $contents['tijd_eind'] = $datum[2]."-".$datum[1]."-".$datum[0] . " ". substr($tijd,-9,5);
    
            if ($contents['tijd_eind']<$contents['tijd_start']) { $contents['tijd_eind'] = 
                                date("Y-m-d", mktime (0,0,0,date("m"),date("d")+1+$dag,date("Y"))) . " " .substr($tijd,-9,5); }

        //genre opzoeken
            $start_pos = strpos($file,"Genre:",0)+54;
            $end_pos = strpos($file,"</div>",$start_pos);
            $lengte_van_het_genre =  $end_pos - $start_pos;
            $genre = substr($file,$start_pos,$lengte_van_het_genre);
            $genre = trim($genre); 
            $contents['genre'] = $genre;

        //omschrijving opzoeken         
            $start_pos = strpos($file,"Inhoud:",0)+55;
            if ($start_pos!=55) 
            {
            $end_pos = strpos($file,"</div>",$start_pos);
            $lengte_van_de_omschrijving =  $end_pos - $start_pos;
            $omschrijving = substr($file,$start_pos,$lengte_van_de_omschrijving);
            $omschrijving = str_replace("<BR>", " ", $omschrijving);
            $omschrijving = trim($omschrijving); 
            $omschrijving = preg_replace('%[\r\n]+%m','',$omschrijving);
            $contents['omschrijving'] = $omschrijving;
            }
return $contents;
}

[ Voor 36% gewijzigd door plakbandrol op 17-04-2005 13:39 ]


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 06-05 18:51

Creepy

Tactical Espionage Splatterer

slaay schreef op zondag 17 april 2005 @ 13:33:
[...]


Zou je zo vriendelijk willen zijn om hier de code vrij te geven? Of desnoods per email te sturen?
Dit is natuurlijk niet de bedoeling he. Dit is een scriptrequest die we hier liever niet zien. Zie ook P&W FAQ - Scriptrequests

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1