http: //parsing og skærm med med den simple html dom bibliotek,,,,, 17,,,,,,,,,,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,, hvis du har brug for at analysere: almindelige udtryk er ikke den rigtige vej at gå.i denne forelæsning, vil du lære at anvende en åben kilde, let lært parser, at læse, ændre og spytter ud html fra eksterne kilder.ved hjælp af nettuts som eksempel, vil du lære at få en liste over alle de artikler, der er offentliggjort på webstedet og udstille dem.,,,, trin 1.forberedelse, den første ting du skal gøre, er at downloade en kopi af simplehtmldom bibliotek, frit tilgængelige fra sourceforge. er der flere sager i downloade, men den eneste, du har brug for, er simple_html_dom.php fil. resten er eksempler og dokumentation,.,, trin 2.parsing basale, dette bibliotek er meget let at bruge, men der er noget grundlæggende, du skal gennemgå, før du sætter den i aktion. - $= nye simple_html_dom(): http: //; //belastning fra en snor $html - > belastning (< html > < krop > < p > - verden!< /p > < p > vi er her < /p > < /organ > < /html > '); //belastning i en fil $html - > load_file ('http: //net. tutsplus. kom /'); de kan skabe deres oprindelige formål, enten ved lastning html fra en snor, eller fra en fil.- en fil kan ske enten via url eller via lokale fil system. en advarsel: load_file() metode til folkesundhedsprogrammet er file_get_contents delegerer sit job.hvis allow_url_fopen er ikke sand i deres php.ini fil, du kan ikke være i stand til at åbne en fjern fil på denne måde.du kan altid falde tilbage på de krøller bibliotek til belastning fjerne sider i denne sag, så læs dem med load() metode., adgang til information, når du har din dom genstand, du kan begynde at arbejde med det ved hjælp af find() og skabe samlinger.en samling er en gruppe af objekter fundet via komitéen - syntaks er meget lig jquery. < html > < krop > < p > - verden!< /p > < p > vi er her. < /p > < /organ > < /html > i dette eksempel: vi skal se på, hvordan de får adgang til de oplysninger i stk. 2, ændres, så produktionen resultaterne.skabe og belastning, omfatter (http: //'simple_html_dom. folkesundhedsprogrammet) $html = nye simple_html_dom(). $html - > belastning (< html > < krop > < p > - verden!< /p > < p > vi er her < /p > < /organ > < /html > ");får et element, der repræsenterer stk. 2 $element = $html - > finde (" p ");ændre det $element [1] - > innertext. =", og vi er her for at blive. "# produktion.echo $html - > save();, ved hjælp af find() metode altid vender tilbage en samling (mængde) af rfid - brikker, medmindre du præcisere, at du kun vil have den n 'te barn, som en anden parameter,.,,, linje 2 - 4: http: //belastning fra en snor, som tidligere forklaret.,, linje 7: det finder alle < p > rfid - brikker i html, og returnerer dem som et system.det første punkt er et indeks på 0, og de efterfølgende afsnit vil blive indekseret i overensstemmelse hermed.,, linje 10: det giver adgang til andet punkt i vores samling af punkt (indeks 1), er en tilføjelse til de innertext attribut.innertext repræsenterer indholdet mellem mærkerne, mens outertext er indholdet, herunder det skilt.vi kunne erstatte et udelukkende ved hjælp af outertext. skal vi tilføje en linje, og ændre den klasse af vores andet afsnit navneskilt. $element [1] - > klasse = "class_name" echo $html - > save(); den deraf følgende: af save - kommandoen ville:, < html > < krop > < p > - verden!< /p > < p - klassen = "class_name" > vi er her, og vi er her for at blive. < /p > < /organ > < /html > andre udvælgere, her er nogle andre eksempler på udvælgere.hvis du har brugt jquery, vil de virker meget bekendt.får den første forekomst af id = "foo" $fælles = $html - > finde ('# foo' 0).få alle elementer med klasse = "foo" $collection = $html - > finde ("foo ');få ankeret hundetegn på en side $collection = $html - > finde (»a«),får alle anker tags, der er inde i h1 tags $collection = $html - > finde ('h1");får alle img mærkater med en titel "himom' $collection = $html - > finde ('img [afsnit = himom]); den første eksempel er ikke helt intuitivt - alle forespørgsler af misligholdelse tilbage samlinger, selv en id - spørgsmål, som kun bør vende et enkelt resultat.men med den anden parameter, siger vi "kun vende tilbage, det første punkt på dagsordenen for denne samling". det betyder $indre er et enkelt element, i stedet for en række elementer med et punkt på dagsordenen. resten af eksempler er selvforklarende., dokumentation, fuldstændig dokumentation for biblioteket kan findes på projektet dokumentation side.,, trin 3.den virkelige verden eksempel at sætte dette bibliotek i handling, vi skal til at skrive en hurtig manuskript at skrabe indholdet af nettuts websted, og udarbejde en liste over artikler, der findes på lokaliteten, afsnit og beskrivelse... kun som eksempel.han er et vanskeligt område af nettet, og bør ikke foretages uden tilladelse.,,, omfatte ('simple_html_dom. folkesundhedsprogrammet) $artikel = array(); getarticles ('http: //net. tutsplus. kom /page /76 /), begynder vi med biblioteket, og at getarticles funktion med side, vil vi gerne starte parsing.i dette tilfælde er vi begyndt i slutningen, og lidt til nettuts - serveren. vi er også om en global system for at gøre det let at samle alle artikel oplysninger på ét sted.før vi begynder parsing, lad os se på, hvordan en artikel sammendrag er beskrevet på nettuts +. < div klasse = "forpremiere" > <!- efter taxonomies - > < div klasse = "post_taxonomy" >...< /div > <!- efter afsnit - > < h1 klasse = "post_title" > < en > afsnit < /a > < /h1 > <!- post - meta - > < div klasse = "post_meta" >...< /div > < div klasse = "tekst" > < p > beskrivelse < /p > < /div > < /div > det er en grundlæggende post - format på stedet, herunder kildekode bemærkninger.hvorfor er de bemærkninger, vigtigt?de tæller som knudepunkter for parser.,, trin 4.fra den parsing funktion, funktion getarticles ($side) (samlet $varer; $html = nye simple_html_dom(). $html - > load_file ($side); //...mere...}, begynder vi helt enkelt ved at hævde vores globale, at skabe en ny simple_html_dom objekt, så vil vi analysere - side.denne funktion vil kalde sig senere, så vi sætter den op til at acceptere url som et parameter, trin 5.at finde de oplysninger, vi ønsker, $poster = $html - > finde ('div [klasse = forpremiere]); for hvert ($poster som $post) (# huske bemærkninger tæller som knudepunkter $varer [...] = system ($post - > børn (3) - > outertext - post - > børn (6) - > first_child() - > outertext)}, det er kød af getarticles funktion.det kommer til at tage et nærmere kig til virkelig at forstå, hvad der sker.,, linje 1: skaber en række elementer - div er med klasse af forpremiere.vi har nu en samling af varer oplagres i $poster.,, linje 5: $post nu henvises der til en enkelt virksomhed i forbindelse med fast ejendom af klasse forpremiere.hvis vi ser på de oprindelige html, kan vi se, at det tredje barn er h1, der indeholder artikel titel.vi tager den, og overdrager det til $[artikel indeks] [0]., husk at starte på 0 og tælle bemærkninger, når de forsøger at fastlægge den rigtige indeks for et barn node.,, linje 6: sjette barn af $post < div klasse = "tekst" >.vi ønsker, at den beskrivelse tekst fra, så tager vi det første barn er outertext - dette vil omfatte punkt et.en enkelt registrering i artikel nu ser sådan ud: $artikler [0] [0] = "min artikel navn." $artikel [0] [1] = "dette er min artikel beskrivelse", trin 6, sidenummerering, den første ting, vi gør, er at fastlægge, hvordan finder vi vores næste side.på nettuts +, url - adresser er let at regne ud, men vi skal lade, som om de ikke er, og få den næste forbindelse via parsing.,, hvis vi ser på http: //ser vi følgende:, < en href = "http://net.tutsplus.com/page/2/" klasse = "nextpostslink" > » < /a > hvis der er næste side, og de vil ikke altid være), finder vi et anker med afgangsklasse nextpostslink ".nu, hvor oplysninger kan anvendes, hvis ($næste = $html - > finde » [klasse = nextpostslink., 0)) ($url = $næste - > href. $html - > clear(); frakoblet ($html); getarticles ($url)), første linje, kan vi se, om vi kan finde et anker med klasse nextpostslink.tag en særlig meddelelse om det andet parameter for find().dette angiver, vi ønsker kun det første element (indeks 0), i fandt indsamling tilbage.- næste gang, vil kun blive holdt et enkelt element snarere end en gruppe af elementer, vi tildeler forbindelsen er href til variabel $url.det er vigtigt, fordi vi er ved at ødelægge html objekt.på grund af en php5 cirkulære henvisninger hukommelse lækage, den nuværende simple_html_dom objekt skal være ryddet og frakoblet, før en anden er skabt.hvis i ikke gør det, kan få dig til at spise alle dine disponible hukommelse. endelig kræver vi getarticles med adressen på næste side.det recursion slutter, når der ikke er flere sider til at analysere, trin 7 outputting de resultater, vi skal oprette et par grundlæggende rydder op.det er helt vilkårlige, kan du få dine output - men du ønsker.,,vigtigste {margen: 80px auto; bredde: 500px;} h1 {skrifttype: dristige 40px /38px helvetica, verdana, uden serif; margen: 0} h1 en (farve:ɘ og tekst): ingen;} p {baggrund:ececec; skrifttype: 10px /14px verdana, uden serif; margen: 8px 0 15px; grænse: 1pxccc fast; polstring: 15px;}. punkt (polstring: 10px;}, nu vil vi få en lille smule af folkesundhedsprogrammet i side til produktionen, den tidligere lagrede oplysninger., <?folkesundhedsprogrammet for hvert ($artikler som $punkt på dagsordenen) (echo "< div klasse ='item" > "echo $post [0] echo $post [1], echo" < /div > ").> det endelige resultat er en enkelt html side med angivelse af alle de artikler, der begynder på side er anført i den første getarticles().,, trin 8 konklusion, hvis du er parsing stor sider (sige, hele stedet) kan det tage længere, da max gennemførelsestid lov af din server.for eksempel, at løbe fra min lokale maskine, det tager et sekund pr. side (herunder tid til at hente). i et anlæg, som nettuts, med en løbende 78 sider af tutorials, det vil gå over et minut. det bør komme i gang med resten af http: //parsing.der er andre metoder til at arbejde med den dom, herunder folkesundhedsprogrammet er bygget på en, der lader dig arbejde med stærke politiske xpath finde elementer.for nemt for anvendelse og hurtig starter, finder jeg dette bibliotek er en af de bedste.som afsluttende bemærkning, husk altid at opnå tilladelse, før han et sted. det er vigtigt.tak for det!,
http: //parsing og skærm med med den simple html dom bibliotek
Previous:magento for designere: del 4
Next Page:simpel php klasse