webForumDet fria alternativet

observer.se

Webbservrar

17 svar · 917 visningar · startad av nordan

Medlem sedan juni 2000949 inlägg
Frågan#1

Är det någon som vet hur ett sådan här program funkar rent tekniskt?
http://www.observer.se/templates/Page.aspx?id=6655

Det är ju ascoolt program.

Någon som vet om det finns något sådan utvecklat i tex PHP?

Medlem sedan okt. 2004502 inlägg
#2

Exakt vad är det du undrar hur det fungerar? Skummade sidan utan att hitta något speciellt...

Medlem sedan juni 2000949 inlägg
#3

Dom har ett program som ligger och bevakar sidor på nätet och skrivs det vissa ord så får man info om att det ligger ny text som innehåller ens sökning.

jag skriver in "Metallica"
och så fort någon skriver något om Metallica på en sida så får man ett e-mail om det, man kan även gå in på en site och kolla på bevakningar.

Medlem sedan juni 2000949 inlägg
#4

Någon som vet nått om ett sånt program och hur det funkar?
Finns det sådana gratisprogram i php??

Medlem sedan apr. 2002830 inlägg
#5

De har crawlers som regelbundet besöker sidor och tittar om ord som finns i deras databas finns på de sidorna.

Så det är med andra ord som google eller de andra sökmotorerna, bara att i det här fallet så vet de vad de skall leta efter när de indexerar en sida :)

Inte den blekaste om det finns sådana gratisprogram i PHP eller liknande, men jag kan tänka mig att du behöver lite mer än PHP för att få det att snurra.

// Niclas

Medlem sedan juni 20031 837 inlägg
#6

Här kommer ett litet exempel som söker genom de specificerade hemsidorna efter de specificerade sökorden.


<?php

// lista med URL:er till sidor att söka på
$urls = array("http://www.aftonbladet.se", "http://www.sydsvenskan.se", "http://www.felaktigadress.se");

// lista med alla sökord
$search_words = array("word", "to", "search", "for");

// funktion för att söka efter vissa ord i webbsida
function checkURL($url, $swords)
{
  // hämta innehållet på hemsidan
  $cont = @file_get_contents($url);

  // kontrollera om $cont innehåller något av sökorden
  return preg_match("/$swords/", $cont);
}

// konvertera array till sträng där orden är separerade med |
$swords = implode("|", $search_words);

foreach($urls as $url)
{
  if(checkUrl($url, $swords))
  {
    echo "<br>" . $url . " innehåller något av de sökta orden";
    // sidan innehåller något av de sökta orden
  }
  else
  {
    echo "<br>" . $url . " innehåller INGET av de sökta orden";
  }
}
?>

sen kan man bygga ut den om den ska ha olika sökord för olika sidor samt om den ska fortsätta att leta genom alla undersidor till huvudsidan m.m.

Detta är ingen bra lösning om det är många som ska kunna använda det.
Då behöver man spara sidorna och kanske skapa något sökindex för att det ska gå snabbare men det är iaf en liten början.

Man behöver även skapat något jobb som laddar hemsidor/kör skriptet med ett visst intervall.

Medlem sedan juni 2000949 inlägg
#7

Tack för svaren!
Vet någon vart det finns lite mera information om hur en sådan crawler är programerad?

Medlem sedan juni 2000949 inlägg
#8

Hallå igen!
om jag lägger in den där php koden på en sida skall det inte funka att söka med den då?
Jag böt ut sökorden och sidorna men jag fick då inga träffar :)

Medlem sedan juni 20031 837 inlägg
#9

vill du visa oss hur din fil ser ut?

Medlem sedan juni 2000949 inlägg
#10

Ja jag har ju bara kopierat den typ


<?php 

// lista med URL:er till sidor att söka på 
$urls = array("http://www.aftonbladet.se", "http://www.metallica.com", "http://www.prenservice.nu"); 

// lista med alla sökord 
$search_words = array("jobb", "tidning", "Metallica", "for"); 

// funktion för att söka efter vissa ord i webbsida 
function checkURL($url, $swords) 
{ 
  // hämta innehållet på hemsidan 
  $cont = @file_get_contents($url); 

  // kontrollera om $cont innehåller något av sökorden 
  return preg_match("/$swords/", $cont); 
} 

// konvertera array till sträng där orden är separerade med | 
$swords = implode("|", $search_words); 

foreach($urls as $url) 
{ 
  if(checkUrl($url, $swords)) 
  { 
    echo "<br>" . $url . " innehåller något av de sökta orden"; 
    // sidan innehåller något av de sökta orden 
  } 
  else 
  { 
    echo "<br>" . $url . " innehåller INGET av de sökta orden"; 
  } 
} 
?>
Medlem sedan juni 20031 837 inlägg
#11

jag körde skriptet och hittade något av orden på alla tre sidor.

http://www.aftonbladet.se innehåller något av de sökta orden
http://www.metallica.com innehåller något av de sökta orden
http://www.prenservice.nu innehåller något av de sökta orden

Medlem sedan juni 2000949 inlägg
#12

Va faen! Vad e det då som kan vara fel? Någon?

Medlem sedan juni 2000949 inlägg
#13

Kan man flytta över denna till PHP forumet så att fler kan se inläggen och att någon kanske har en lösning på problemet?? :D

Medlem sedan juni 20031 837 inlägg
#14

din version av PHP eller inställningarna kanske inte stödjer att du hämtar filer från andra servrar.
kör du på din egna dator eller på ett webbhotell?

du kan testa att ändra

  $cont = @file_get_contents($url);

till

  $cont = file_get_contents($url);

d.v.s. ta bort @ framför file_get_contents($url);
du får du se felmeddelandet. valde att inte visa detta normalt.

Medlem sedan juni 2000949 inlägg
#15

Så här ser det ut om jag tar bort @

Warning: file_get_contents(http://www.prenservice.nu) [function.file-get-contents]: failed to open stream: no suitable wrapper could be found in /home/public_html/test.php on line 15

http://www.prenservice.nu innehåller INGET av de sökta orden

Jag kör på webbhotell (space2u.com)

Medlem sedan juni 20031 837 inlägg
#16

kör de PHP i safe_mode? om de gör det så kan du inte hämta filer från andra servrar

Medlem sedan juni 2000949 inlägg
#17

Allts som det stod om safe_mode i PHPINFO är på off??

Medlem sedan juni 20031 837 inlägg
#18

inte säkert att webhotellet stödjer att du hämtar en fil via URL med file_get_contents
från https://www.php.net

Tip: You can use a URL as a filename with this function if the fopen wrappers have been enabled. See fopen() for more details on how to specify the filename and Appendix M for a list of supported URL protocols.

allow_url_fopen boolean

This option enables the URL-aware fopen wrappers that enable accessing URL object like files. Default wrappers are provided for the access of remote files using the ftp or http protocol, some extensions like zlib may register additional wrappers.

    Note: This setting can only be set in php.ini due to security reasons. 

    Note: This option was introduced immediately after the release of version 4.0.3. For versions up to and including 4.0.3 you can only disable this feature at compile time by using the configuration switch --disable-url-fopen-wrapper.
527 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
391 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
391 ms — ändringar (db)