Avatar billede zombien Juniormester
18. december 2014 - 11:53 Der er 15 kommentarer

PHP grab content fra en URL og håndtere det

Hej Eksperter

Jeg sidder og er i gang med at lege lidt med en side crawler, hvor jeg vil benytte file_get_contents() eller stream_get_contents()

min kode ser lige i øjeblikket sådan her ud

<i>
if ( isSet($_GET['pagename']) ) {

$keyword1 = 'Test';
$theURL = 'https://www.google.dk/#q=' .$keyword1;
$url_grabber = stream_get_contents($theURL);
       
$strPrint .= $url_grabber;

}
</i>

men får følgende fejlbeskeder
Warning: stream_get_contents() expects parameter 1 to be resource, string given in C:\fast_scripts\system-files\crawler.php on line 9

og med file_get_contents() kommer der ingen fejlbesked, men der kommer derimod heller intet indhold fra google af :/

Hvad kan jeg gøre forkert? for det virker egentlig ikke på nogle sider...
Avatar billede repox Seniormester
18. december 2014 - 12:05 #1
stream_get_contents() kræver at du angiver en resourse at typen returrneret fra f.eks. fopen().
Med andre ord, skal du bruge fopen() på URL'en og ikke via stream_get_contents.

I forhold til file_get_contents, er du så sikker på du har slået allow_url_fopen til?
http://php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen
Avatar billede zombien Juniormester
18. december 2014 - 12:34 #2
Jeg kan både benytte include, include_once, require, require_once.

Så burde gerne have allow-url-fopen aktivt...

kan se på min test-server som den køre på at følgende står i php.ini

;;;;;;;;;;;;;;;;;;
; Fopen wrappers ;
;;;;;;;;;;;;;;;;;;

; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
; http://php.net/allow-url-fopen
allow_url_fopen=On

; Whether to allow include/require to open URLs (like http:// or ftp://) as files.
; http://php.net/allow-url-include
allow_url_include=Off
Avatar billede zombien Juniormester
18. december 2014 - 12:36 #3
men det fopen($theURL); ? ville det kunne fungere med stream_get_contents()
Avatar billede zombien Juniormester
18. december 2014 - 12:39 #4
; Whether to allow include/require to open URLs (like http:// or ftp://) as files.
; http://php.net/allow-url-include
allow_url_include=On

den har jeg lige ændret :) men stadig ingen effekt
Avatar billede zombien Juniormester
18. december 2014 - 13:05 #5
Okay, nu har jeg fået den til at hente siden, MEN hvis jeg eks. bare skriver echo $url_grabber fremviser den bare hele google siden som klient view...

er der en mulighed for at få den til at vise html-koden, så man kan starte med at splitte de forskellige dele op?

og fjerne forskellige tags?
Avatar billede repox Seniormester
18. december 2014 - 13:25 #6
Er der en årsag til at du ikke bruger deres API til at søge med i stedet? Du får ikke nogle søgeresultater ud af den side du prøver på at gøre det med.
Avatar billede zombien Juniormester
18. december 2014 - 14:10 #7
deres API? kan man derved hente resultaterne ud fra et keyword uden de store problemer?

for det er søgeresultaterne jeg er interesseret i, samt selvfølgelig annoncerne...

men der findes ingen måde til at man kan få en html oversigt over det man har hentet ud?

fjerne alt undtagen <ul> <ol> <li> og indholdet i disse?
Avatar billede repox Seniormester
18. december 2014 - 14:17 #8
Hvorfor er du interesseret i annoncerne?

Problemet er at den side du forsøger at arbejde med er ren JavaScript - der er ingen søgeresultater, kun et skelet som skal parses af en JavaScript parser - og det kan du ikke i PHP alene.
Avatar billede zombien Juniormester
18. december 2014 - 14:32 #9
Grunden til min store interesse i både det organiske og annoncerne er for at jeg kan tagge mit domæne ud fra listen af og hvilken placering at mit domæne ligger på for det enkelte keyword...

og om jeg ligger i top 3 for de betalende annoncer :D

vil bare ikke selv sidde og søge på hvert enkelt keyword, så må være muligt at kunne lave noget scripting og får da også lige p.t. fremvist hele googlesiden uden grafik selvfølgelig med resultaterne...

men laver jeg en strip_tags() går det i kludder :S
Avatar billede repox Seniormester
18. december 2014 - 14:45 #10
Det du gerne vil er ikke umiddelbart muligt af adskillige årsager, herunder geografi, adfærdstracking og naturligvis device fingerprinting.

Jeg kan ikke hjælpe dig med at løse det du gerne vil, og det tror jeg ikke der er nogen der kan, af den simple årsag at hvis nogen kunne regne det ud du gerne vil automatisere, så har Google ikke haft held nok med at beskytte deres forretningsmodel - og indtil videre lader det til at de ellers klarer det ret godt.
Avatar billede zombien Juniormester
18. december 2014 - 14:49 #11
Ahhh det kan ikke helt passe, for der findes adskillige værktøjer der kan det samme dog måske kodet i et andet sprog og på en anden måde... prøv bare at se http://www.webceo.com/

Så det må jo være muligt på en eller anden måde :/

er bare for nærig til at købe et produkt med månedlig ydelse :D
Avatar billede repox Seniormester
18. december 2014 - 14:55 #12
webceo.com kan sammenligne organiske søgningsresultater målt op mod betalte annoncer/såsom adwords?
Avatar billede zombien Juniormester
18. december 2014 - 14:57 #13
Ikke op mod annoncer, men de kan fange hvilken placering din side har på google ud fra et søgeord :) så ergo de må have mulighed for at splitte det return de får fra google...
Avatar billede repox Seniormester
18. december 2014 - 15:05 #14
Jeg har allerede lavet noget der kan vise neutral placering på Google ud fra søgetermer, men ikke noget der kan sammenligne med betalte annoncer.
Avatar billede zombien Juniormester
18. december 2014 - 15:21 #15
Så du har allerede noget der kan fremvise hvilken placering man har på google ud fra hvilket keyword?

Men er det muligt at få php kun til at hente indhold i bestemte tags fra en string...

eks. <div id="tads"> som en form for explode? så man sletter alt før dette optræder i string
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

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