Avatar billede -zonic- Nybegynder
27. juni 2007 - 00:28 Der er 27 kommentarer og
1 løsning

hente data fra infosport til egen site?

Hej Eksperter,

da Infosport hverken leverer feeds eller databaser med deres resultater ved jeg at der findes en måde hvorpå man kan luske deres data ind på eget site, blot ved at hive noget kode fra deres sider og ind på eget site, men ved bare ikke hvordan..

Er der nogle der kan forklare hvordan jeg får dette www.skovbakken-badminton.dk/infosport.gif hevet ud fra denne side http://www.infosport.dk/cgi-bin/Display2.dbf/stillng.mml?rv1=P003994&rk=3%2Edivision&idr=&fb=DBF så jeg kan bruge det som tekst?

Jeg har kigget lidt i tidligere spørgsmål og kunne ikke få noget til at virke, så jeg skal desværre bruge en gennemgang af hvordan koden skal se ud!
Håber I kan hjælpe mig!!
Avatar billede roenving Novice
27. juni 2007 - 01:10 #1
Kan du ikke bare spørge dem ?-)
Avatar billede cronick Nybegynder
27. juni 2007 - 01:10 #2
1. Det er ikke helt legalt at lave en sådan løsning, som du efterspørger..
2. Tvivler på at det billede, som du fremstiller, er hevet ud fra den side på infosport.dk - da det mere tegner på, at det bare er lavet til i billede (PrintScreen), ved brug af et billedredigeringsprogram. At lave et sådant billede, ved hjælp af udelukkende kodning (evt. GDLib i PHP), vil selvfølgelig være muligt, på trods af at være tidskrævende. Men det virker bare ikke umiddelbart til at være tilfældet her..
Avatar billede -zonic- Nybegynder
27. juni 2007 - 01:14 #3
for dælan da.... billedet var en illustration af hvilken del af siden jeg skulle bruge.... har fundet det her, men kan slet ikke få det til at blive til noget

<?php

$fd= fread(fopen(\"http://www.tv2.dk/\", \"r\"), 100000);

if ($fd)
        {
    $start= strpos($fd, \"<td class=spalte23>\");
    $finish= strpos($fd, \"<div align=right>\");
    $length= $finish-$start;
    $code=Substr($fd, $start, $length);
    }


echo $code;

?>
Avatar billede -zonic- Nybegynder
27. juni 2007 - 01:16 #4
og dette var så et eksempel fra :
http://www.eksperten.dk/spm/100623 ;)
Avatar billede -zonic- Nybegynder
27. juni 2007 - 01:21 #5
problemet er i øvrigt, at infosport ikke vil levere adgang til deres databaser pga tidligere misbrug..  :-/  jeg har fået på skrift at jeg må gengive deres data på en lukket side for medlemmer og ikke andet, og derfor vil jeg gerne have dette til at ske automatisk... så der er intet ulovligt der...
Avatar billede -zonic- Nybegynder
27. juni 2007 - 01:47 #6
nu begynder det at ligne noget.. har fået følgende til at virke..

$buffer = '';

$fp = fopen('http://www.dinside.dk/ditlink.php, 'r');
while (!feof($fp)) $buffer .= fgets($fp, 1024);
fclose($fp);

print $buffer;
?>

nu skal jeg bare have den til at hente fra et bestemt sted til et andet..?
Avatar billede -zonic- Nybegynder
27. juni 2007 - 01:51 #7
Indhentning af data fra fremmede websites med PHP
Følgende funktion kan benyttes til at hente en fremmed webside ind i en streng i PHP:
function fetchurl ( $url ) {
$fp = fopen($url, ’r’);
if ( ! $fp )
return "No page";
$contents = fread($fp, 1000000);
fclose($fp);
return $content;
}
Sammen med et regulært udtryk (et mønster) kan den indbyggede PHP-funktion eregi bruges til at klippe
indformation ud af en webside indeholdt i en streng.
Funktionen eregi($p,$txt,$result) tager tre argumenter:
 $p er et mønster til afgrænsning af hvilken tekst der skal klippes ud
 $txt er teksten mønsteret sammenlignes mod
 $result er et resultat-array indeholdende udklippet tekst efter kaldet til eregi


er her ikke noget som kan bruges?
Avatar billede -zonic- Nybegynder
27. juni 2007 - 02:11 #8
eller her måske? http://www.sitepoint.com/article/php-xml-parsing-rss-1-0/2

går i seng nu.. håber på svar imorgen :)
Avatar billede -zonic- Nybegynder
27. juni 2007 - 02:48 #9
argh.. nu er jeg tæt på løsningen.....

<?php
$title = "Velkommen";  //Tittel på side
$bgcolor = "#FFFFFF"; //Bagrunds farve
$file = "http://www.hodsager.net/lorem.php"; //Filen der skal åbenes
$bytes = 150000; //antal bytes der skal læses!
$start_fra = "Sed"; //hvor den skal starte med at læse fra
$plustags = "<table><tr><td><br><p><font>"; //Tags der gerne må vises

echo '<html><head></head>'.$title.'<title></title><body bgcolor="'.$bgcolor.'">';
$open = fopen($file, "r");

// Først åbnes linket til den fil der skal åbnes

$read = fread($open, $bytes);

fclose($open);

$tekst= stristr($read, $start_fra);

// $read renses for alle tags, undtagen den du har skrevet i $plustags
$minustags = strip_tags($tekst, $plustags);

                         
echo $minustags;

?>

jeg skal bare finde ud af hvordan man sætter en stopper nu....?
Avatar billede -zonic- Nybegynder
27. juni 2007 - 02:52 #10
Avatar billede jakobdo Ekspert
27. juni 2007 - 08:40 #11
Prøv følgende:

<?php
$url = 'http://www.infosport.dk/cgi-bin/Display2.dbf/stillng.mml?rv1=P003994&rk=3%2Edivision&idr=&fb=DBF';
$indhold = file_get_contents($url);
if (preg_match('%<!-- udvidet stilling -->(.*?)<!-- /enkelt stilling -->%s', $indhold, $resultat)) {
    echo $result[1];
}

?>
Avatar billede -zonic- Nybegynder
27. juni 2007 - 10:09 #12
jeg får følgende fejl:

Warning: file_get_contents(http://www.infosport.dk/cgi-bin/Display2.dbf/stillng.mml?rv1=P003994&rk=3%2Edivision&idr=&fb=DBF) [function.file-get-contents]: failed to open stream: Connection refused in /usr/home/skb/public_html/inf.php on line 12
Avatar billede jakobdo Ekspert
27. juni 2007 - 10:48 #13
Virker fopen() med at læse indholdet?
Avatar billede -zonic- Nybegynder
27. juni 2007 - 10:52 #14
det virkede med den fil jeg prøvede som bare var en alm php fil med text... men ikke med infosports link... kan det være fordi deres site er meget langsomt?
Avatar billede jakobdo Ekspert
27. juni 2007 - 11:16 #15
$file = "http://www.hodsager.net/lorem.php";
Er dette en fil på din egen side?

Det kan være allow_url_fopen er OFF.
Avatar billede -zonic- Nybegynder
27. juni 2007 - 11:40 #16
ja.. det er en fil på eget site... og det virkede.. men kan infosport have låst deres?!
Avatar billede -zonic- Nybegynder
27. juni 2007 - 11:40 #17
og i øvrigt har det noget at gøre med at deres filer er mml ? så vidt jeg har forstået er det også en xml standard?
Avatar billede jakobdo Ekspert
27. juni 2007 - 12:03 #18
Der er står forskel på at hente filer på egen server eller andres.
Prøv at lave filen:

<?php
phpinfo();
?>

og smid et link herind til siden.
Avatar billede -zonic- Nybegynder
27. juni 2007 - 12:18 #19
Avatar billede -zonic- Nybegynder
27. juni 2007 - 12:55 #20
jeg har desværre konstateret at min php server version er pinligt forældet :-/

det virker perfekt her på en version 5.1.2

http://84.238.20.16/infosport.php

mange tak for hjælpen!! smid et svar :-)
Avatar billede -zonic- Nybegynder
27. juni 2007 - 12:57 #21
men hvis du lige vil hjælpe et minut mere.....

kræver det en update af serveren hvis det skal virke, hvis du lige sammenligner med denne...

http://84.238.20.16/phpinfo.php
Avatar billede kinderaeg Nybegynder
27. juni 2007 - 16:06 #22
Der er sandsynligvis lukket i udbyderens firewall for udgående forespørgsler. Du kan evt lave en side som nedenstående, og teste om du kan åbne sockets. Hvis du kan det, er det trafikken er blokeret af din udbyder (husk at ændre server-adressen). Hvis du får fejl i socket-connect, må du forespørge din udbyder om der kan åbnes et hul i firewallen til infosport.

<?php
error_reporting(E_ALL);

echo "<h2>TCP/IP Connection</h2>\n";

/* Get the port for the WWW service. */
$service_port = getservbyname('www', 'tcp');

/* Get the IP address for the target host. */
$address = gethostbyname('www.servername.com');

/* Create a TCP/IP socket. */
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket < 0) {
    echo "socket_create() failed: reason: " . socket_strerror($socket) . "\n";
} else {
    echo "OK.\n";
}

echo "Attempting to connect to '$address' on port '$service_port'...";
$result = socket_connect($socket, $address, $service_port);
if ($result < 0) {
    echo "socket_connect() failed.\nReason: ($result) " . socket_strerror($result) . "\n";
} else {
    echo "OK.\n";
}

$in = "HEAD / HTTP/1.1\r\n";
$in .= "Host: www.servername.com\r\n";
$in .= "Connection: Close\r\n\r\n";
$out = '';

echo "Sending HTTP HEAD request...";
socket_write($socket, $in, strlen($in));
echo "OK.\n";

echo "Reading response:\n\n";
while ($out = socket_read($socket, 2048)) {
    echo $out;
}

echo "Closing socket...";
socket_close($socket);
echo "OK.\n\n";
?>
Avatar billede jakobdo Ekspert
27. juni 2007 - 16:17 #23
Du får et svar!
Avatar billede -zonic- Nybegynder
27. juni 2007 - 18:13 #24
okay...så det har altså ikke noget med php versionen at gøre?
Avatar billede -zonic- Nybegynder
27. juni 2007 - 18:18 #25
http://www.skovbakken-badminton.dk/socket.php <- ser ud til at det virker fint... men det er ikke fordi det kører php 4.4.4 ?
Avatar billede jakobdo Ekspert
27. juni 2007 - 20:21 #26
Nej, det med stor sandsynlighed en indstilling der er lavet på serveren.
Man kan sætte en server op, så enten må den forbinde ud til at andre side og hente data eller også må den ikke.
Avatar billede -zonic- Nybegynder
28. juni 2007 - 10:33 #27
jeg takker mange gange for hjælpen, det var virkelig guld værd! giver lige en omgang karma samtidig ;)
Avatar billede jakobdo Ekspert
28. juni 2007 - 10:40 #28
Takker for point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester