Permalänk
Medlem

Prisgrabbningsskript i PHP

Jag håller på att försöka skriva ett skript i PHP, som ska hämta priser ifrån komplett.se.
Detta är mest i utbildningssyfte.

Koden som jag håller på med är en moddad version utav ett script jag hittade på hotscripts.com mest för att få en bra grund i det hela.

Koden ser ut som följer:

<?php $url = $_GET['url']; // Trailing slash when not using filename $file = "content.inc"; // file to write to. remember to chmod 777 to not get errors $unique_start = "<html>"; // Where to begin to grab $unique_end = "</html>"; // Where to end the grab ###################################################### ## No editing below here ## Editing below this line voids warranty :-) ###################################################### ini_set('max_execution_time', '0'); flush (); // fetch domein from url $fetch_domain = parse_url($url); $fetch_domain = $fetch_domain[host]; // Host checking code $socket_handle = fsockopen("$fetch_domain", 80, $error_nr, $error_txt,30); if(!$socket_handle) { print("Cannot make a connection to: $fetch_domain and therefore cannot collect your requested data"); $contents = implode("",@file( $file ) ); echo $contents; exit; } $fd= fread(fopen("$url", "r"), 100000); if ($fd) { $start= strpos($fd, "$unique_start"); $finish= strpos($fd, "$unique_end"); $length= $finish-$start; $code=Substr($fd, $start, $length); } ###################################################### ## No editing above here ## Editing above this line voids warranty :-) ###################################################### // $code = preg_replace("new code", "old code", $code); // uncomment the above line to edit the output //echo $code; echo "All done grabbing content"; //$code = strip_tags($code); $tmpfile = fopen($file,"w+"); $fp = fwrite($tmpfile,$code); fclose($tmpfile); flush (); ?>

URLen som jag försöker hämta ifrån är:
http://www.komplett.se/k/kl.asp?AvdID=1&CatID=9&GrpID=1&t=715...

Content.inc får då detta innehåll:
Komplett.seKomplett.seCookies Required

Hur fixar jag detta?
Om det nu går.

Visa signatur

"Problemet med socialism är att till sist tar alla andras pengar slut" - Margaret Thatcher

Permalänk
Medlem

varför använda fsock,

$fd = fopen ($url, "r");
while (!feof ($fd)) {
$buffer += fgets($fd, 4096);
}

så får du hela sidan i variablen $buffer, sen är det bara att börja parsa

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Dhanjel
varför använda fsock,

$fd = fopen ($url, "r");
while (!feof ($fd)) {
$buffer += fgets($fd, 4096);
}

så får du hela sidan i variablen $buffer, sen är det bara att börja parsa

Vad är den praktiska skillnaden då?

När jag tog den där koden blir innehållet i content.inc: 0

Hur fixar jag så att sidan bli inläst?

Visa signatur

"Problemet med socialism är att till sist tar alla andras pengar slut" - Margaret Thatcher

Permalänk
Medlem

ska tesa lite..

uppdatering:

verkar som om deras sidor kräver cookies, vet inte om man kan fejka det tyvärr, annard hade det optimala varit:

<?PHP
$buffer = "";
$url= "http://www.komplett.se/k/kl.asp?AvdID=1&CatID=9&GrpID=1&t=715...";
$file = fopen($url,"r") or die("error");
while (!feof ($file)) {
$buffer[] = fgets($file, 4096);
}
?>

Ung. som jag skrev ovan, du får använda nån annan butik

Permalänk
Medlem

Någon som vet hur man "fejkar" en cookie?

Visa signatur

"Problemet med socialism är att till sist tar alla andras pengar slut" - Margaret Thatcher

Permalänk
Medlem

då måste man nog öppna en socket och skriva
GET /k/kl.asp?AvdID=1&CatID=9%GrpID=1&t=715&l=2
Host: www.komplett.se
Connection-Type: Close
Cookies: namn: värde

har jag för mig, men fråga inte hur mig hur man gör, jag har använd på tok för mycket TCL för att komma ihåg HTTP/Socket-programmering i PHP.

Visa signatur

"`F' is group reply. This is because `G' is for sort and `g' is for get new mail. And `G' is for sort because `sort' used be called `group', and anyway `S' is for save mailbox and `s' is for file message in folder, because `f' is group reply and `F' is group reply including original text."

Permalänk
Medlem

Har skrivigt ihop ett eget script med lite hjälp av exemplen på php.net men grejen är att scriptet svarar "Success, wrote to file $file" men inget hamnar i content.inc även om den har chmod 777 nån som kan hjälpa ? Även om det inte ska ligga kvar i content.inc så kommer inget ut på skärmen av någo av scripten (har då testat med en output i mitt eget)!

<?php $host = 'http://www.inetdata.se/tillbehor/product.dip?p=21746'; $file = 'content.inc'; $start = '<html>'; $end = '</html>'; $fd = fopen("$host", "r"); $buffer = fgets($fd, 4096); if (is_writable($file)) { if (!$fp = fopen($file, 'a')) { print "Cannot open file ($file)"; exit; } if (!fwrite($fp, $buffer)) { print "Cannot write to file ($file)"; exit; } print "Success, wrote to file $file"; fclose($fp); } else { print "The file $file is not writable"; } fclose($fd); ?>

Jag har testat med EyEr0n's script med men samma sak!

Visa signatur

Windows XP | AMD Athlon XP1700+ | 512Mb DDR | GeForce 4 Ti 4600 | IBM 160Gb 160GXP
FreeBSD | AMD TBird 800MHz | 512Mb SDRAM | ATI 8Mb | IBM 30Gb
http://www.mozilla.org/ - Firefox