HTML DOM php

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 3 4 5 6 volgende »

Keizer Webdesign

Keizer Webdesign

13/09/2012 20:55:59
Quote Anchor link
hallo,

ik ben bezig scriptje die deze stappen automatiseren
Net 5, SBS 6 en Veronica:
1. Gebruik http://www.sbs6.nl/, http://www.net5.nl/ of http://www.veronicatv.nl/ afhankelijk van de gewenste zender. Deze uitleg gaat uit van http://www.sbs6.nl/.
2. Open http://www.sbs6.nl/ajax/Video/page/1, http://www.sbs6.nl/ajax/Video/page/2, etc. totdat je het gewenste aantal video's hebt bereikt. Sla hiervan de URLs naar de afleveringenpagina's op.
3. Open een afleveringenpagina uit stap 2 en zoek in de html-code naar een javascriptblok met "playerID" en "@videoPlayer". Sla de bijbehorende waardes op.
4. Open http://c.brightcove.com/services/viewer/htmlFederated?playerID= + playerID-waarde uit stap 3 + &@videoPlayer= + @videoPlayer-waarde uit stap 3. Let op: als je deze pagina opent, moetje de referrer instellen op bijvoorbeeld http://www.sbs6.nl/. De pagina heeft namelijk een domeinrestrictie om het embedden in andere sites onmogelijk te maken.
5. Zoek in de pagina van stap 4 naar een javascriptblok met daarin driemaal "defaultURL". De bijbehorende waardes zijn gewoon http-links naar de video's die je direct kunt gebruiken.

ik heb nog geen werkend beginnetje
wie kan me helpen?

alvast bedankt
Robert-Jan
Gewijzigd op 13/09/2012 21:03:54 door Keizer Webdesign
 
PHP hulp

PHP hulp

24/11/2024 17:50:48
 
- Ariën  -
Beheerder

- Ariën -

13/09/2012 21:02:26
Quote Anchor link
En wat is je uiteindelijke vraag?
 
Keizer Webdesign

Keizer Webdesign

13/09/2012 21:05:19
Quote Anchor link
RobertJan Keizer op 13/09/2012 20:55:59:

ik ben bezig scriptje die deze stappen automatiseren
Net 5, SBS 6 en Veronica:
1. Gebruik http://www.sbs6.nl/, http://www.net5.nl/ of http://www.veronicatv.nl/ afhankelijk van de gewenste zender. Deze uitleg gaat uit van http://www.sbs6.nl/.
2. Open http://www.sbs6.nl/ajax/Video/page/1, http://www.sbs6.nl/ajax/Video/page/2, etc. totdat je het gewenste aantal video's hebt bereikt. Sla hiervan de URLs naar de afleveringenpagina's op.
3. Open een afleveringenpagina uit stap 2 en zoek in de html-code naar een javascriptblok met "playerID" en "@videoPlayer". Sla de bijbehorende waardes op.
4. Open http://c.brightcove.com/services/viewer/htmlFederated?playerID= + playerID-waarde uit stap 3 + &@videoPlayer= + @videoPlayer-waarde uit stap 3. Let op: als je deze pagina opent, moetje de referrer instellen op bijvoorbeeld http://www.sbs6.nl/. De pagina heeft namelijk een domeinrestrictie om het embedden in andere sites onmogelijk te maken.
5. Zoek in de pagina van stap 4 naar een javascriptblok met daarin driemaal "defaultURL". De bijbehorende waardes zijn gewoon http-links naar de video's die je direct kunt gebruiken.


dus het scrape van uitzendingen
 
- Ariën  -
Beheerder

- Ariën -

13/09/2012 21:10:56
Quote Anchor link
Als deze in XML worden aangeboden kan je toch met SimpleXML deze uitlezen? Als het geen XML is, maar HTML, dan zou ik eerst maar eens toestemming gaan vragen, van scrapen is niet zomaar toegestaan.

Ook al is het XML, dan zou ik alsnog toestemming vragen om te publiceren. XML is geen vrijbrief om iets auteursrechtenvrij te laten zijn.
Gewijzigd op 13/09/2012 21:11:44 door - Ariën -
 
Keizer Webdesign

Keizer Webdesign

13/09/2012 21:14:20
Quote Anchor link
Ik wil alleen kijken of het lukt. Ik ga het niet publiceren omdat ik sbs niet op me dak wil. Hoe en waar kan ik zien of het in xml wordt aangeboden?
Gewijzigd op 13/09/2012 21:18:49 door Keizer Webdesign
 
- Ariën  -
Beheerder

- Ariën -

13/09/2012 21:15:33
Quote Anchor link
gebruik eens leestekens a.u.b.
 
Keizer Webdesign

Keizer Webdesign

13/09/2012 21:19:51
Quote Anchor link
zo lang het voor eigen gebruik is mag het(http://www.sbs.nl/organisatie/gebruiksvoorwaarden):

Intellectuele eigendomsrechten
Alle eigendomsrechten (inclusief de intellectuele eigendomsrechten) op al het materiaal inclusief maar niet beperkt tot alle teksten, foto’s, beelden, geluiden, formats, merken en programmatuur van de Websites zijn voorbehouden aan SBS en/of haar licentiegevers. De inhoud van de Websites is bestemd voor persoonlijk, niet-commercieel, gebruik. Voor elk ander gebruik is vooraf schriftelijke toestemming van SBS vereist.


Toevoeging op 13/09/2012 21:20:20:

Leestekens er in gezet!!!
 
- Ariën  -
Beheerder

- Ariën -

13/09/2012 21:27:19
Quote Anchor link
Een kwestie van zoeken, of als ze er zijn, de app's voor mobiele telefoon of tablets eens sniffen.

Als je ze in HTML wilt scrapen, kijk dan eens naar: http://simplehtmldom.sourceforge.net/
 
Keizer Webdesign

Keizer Webdesign

13/09/2012 21:33:13
Quote Anchor link
daar van heb ik dit scriptje gemaakt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$html
= file_get_html('http://www.sbs6.nl/ajax/video/1');
foreach        ($html->find('img') as $element)
echo         $element->src . '<br>';
?>

alleen werkt hij niet
 
- Ariën  -
Beheerder

- Ariën -

13/09/2012 21:35:57
Quote Anchor link
Dan kunnen we inderdaad de conclusie trekken dat het niet werkt....
Kan je nog wat specifieker zijn, dan "werkt niet?"
 
Keizer Webdesign

Keizer Webdesign

13/09/2012 21:43:59
 
- Ariën  -
Beheerder

- Ariën -

13/09/2012 21:45:45
Quote Anchor link
Vertaal eens? En waar komt die functie vandaan denk je?
 
Keizer Webdesign

Keizer Webdesign

28/10/2012 14:54:23
Quote Anchor link
hallo,

ik zou graag willen weten of ik data van een site kan halen en die vervolgens in een xml bestand kan zetten. als dat mogelijk is zou iemand dan willen uitleggen hoe?

alvast bedankt,

RobertJan
 
Eddy E

Eddy E

28/10/2012 18:19:09
Quote Anchor link
Die $html-class van simplhtmldom is echt de bom. Dat werkt als een trein.
Werkt je class-aanroep wel? Dus alles juist geïncluded en aangeroepen?

Het kan ook ongeveer zo: (dit haalt een stuk tekst weg uit een lap html):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php

    // TAAK 1: verkrijg meditatie
// TAAK 1: verkrijg meditatie

    $tekst = file_get_contents('http://hghg.nl/index.php?view=article&catid=16%3Akerkbode&id=522%3Akerkbode-68-18&tmpl=component&print=1&layout=default&page=&option=com_content&Itemid=24');
    //$tekst = htmlentities($tekst);
    $tekst = tussen($tekst, '<strong>', '<p align="center">');
    $tekst = strip_tags($tekst, "<em></em>");
    $tekst = str_replace(array("&nbsp;", "\t", '‘', '’', '“', '”'), '', $tekst);
    $regels = explode(PHP_EOL, $tekst);

    $regels = array_filter($regels, create_function('$a', 'return trim($a)!="";'));
    $regels = array_values($regels);

    // verkrijg delen
    $titel = trim($regels[0]);
    list($vers, $locatie) = explode("</em>", $regels[1]);
    $vers = '<i>' . str_replace("<em>", '', $vers) . '</i>';
    $locatie = '<u>' . trim(str_replace(array("(", ")"), '', $locatie)) . '</u>';
    $schrijver = end($regels);
    $tekst = array_slice($regels, 2, (count($regels) - 3));
    $tekst = '<p>' . implode("</p>\n</p>", $tekst) . '</p>';

    echo '<h1>' . $titel . '</h1>' . $vers . $locatie . '<br><br><br>' . $tekst . '<br><br><br>' . $schrijver;
?>


En iets moeilijker, met inloggen etc.
Dit haalt alle uitzendingen van kerkdienstgemist.nl:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<?php


    // TAAK 3: preken downloaden van kerkuitzendinggemist.nl
    $pagina = 'http://kerkdienstgemist.nl/playlists/legacy.html?id=369';
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $pagina);
    // set url to post to
    curl_setopt($ch, CURLOPT_COOKIESESSION, 1);
    curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
    curl_setopt($ch, CURLOPT_DNS_USE_GLOBAL_CACHE, 1);
    curl_setopt($ch, CURLOPT_FAILONERROR, 1);
    curl_setopt($ch, CURLOPT_FRESH_CONNECT, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    // return into a variable
    curl_setopt($ch, CURLOPT_TIMEOUT, 600000);
    // times out after Ns
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    // times out after Ns
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
    curl_setopt($ch, CURLOPT_POST, 0);
    // set POST method
    curl_setopt($ch, CURLOPT_FAILONERROR, 0);
    curl_setopt($ch, CURLOPT_VERBOSE, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    $res = curl_exec($ch);
    $res = tussen($res, "<table border='0' cellpadding='0' cellspacing='0' class='center'>", '</table>');
    //$res = strip_tags($res, "<a></a><img>");
    $res = explode("</tr>", $res);

    $res = array_slice($res, 0, 3);
    foreach($res as $res2)
    {


        $url = tussen($res2, "</td>" . PHP_EOL . "<td class='buttons'>", '" title="Downloaden');
        $url = str_replace('<a href="', 'http://kerkdienstgemist.nl', $url);
        $url = trim($url);
        $echo[] = 'cURL() haalt '.$url.' op.';

        // stap 3b
        $pagina = $url;
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $pagina);
        // set url to post to
        curl_setopt($ch, CURLOPT_COOKIESESSION, 1);
        curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
        curl_setopt($ch, CURLOPT_DNS_USE_GLOBAL_CACHE, 1);
        curl_setopt($ch, CURLOPT_FAILONERROR, 1);
        curl_setopt($ch, CURLOPT_FRESH_CONNECT, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        // return into a variable
        curl_setopt($ch, CURLOPT_TIMEOUT, 600000);
        // times out after Ns
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        // times out after Ns
        curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
        curl_setopt($ch, CURLOPT_POST, 0);
        // set POST method
        curl_setopt($ch, CURLOPT_FAILONERROR, 0);
        curl_setopt($ch, CURLOPT_VERBOSE, 1);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        $res = curl_exec($ch);
        // <html><body>You are being <a
        // href="http://media.kerkdienstgemist.nl:80/11304060/2012-06-10-1800.mp3?Signature=13U0StxNq7K%2BUn%2BmmTJ3cb8q6d8%3D&amp;Expires=1339865566&amp;AWSAccessKeyId=1VYKRTJ5FFKT5B6F4NR2">redirected</a>.</body></html>

        $res = str_replace('<html><body>You are being <a href="', '', $res);
        $res = str_replace('">redirected</a>.</body></html>', '', $res);
        //$echo[] = 'cURL() heeft het echte pad verkregen: '.$res;

        // stap 3c, bestand downloaden en opslaan
        // bewerk en verkrijg gegevens voor opslag

        $naam = $url = $res;

        // naam krijgen
        $naam = str_replace("http://media.kerkdienstgemist.nl:80/", "", $naam);
        list($nummer, $datum_en_meer) = explode("/", $naam);
        list($datum, $opties) = explode("?", $datum_en_meer);
        $naam = $datum;

        // datum krijgen
        $datum = str_replace(".mp3", "", $naam);
        $datum = $datum;
        list($jaar, $maand, $dag, $tijd) = explode("-", $datum);
        $tijd = substr($tijd, 0, 2) . ":" . substr($tijd, 2, 2) . ':00';
        $datum = $jaar . '-' . $maand . '-' . $dag . ' ' . $tijd;

?>


Uiteraard sla ik het ook nog een keer op ;).
 
Keizer Webdesign

Keizer Webdesign

28/10/2012 21:49:57
Quote Anchor link
bedankt voor de uitleg maar hoe maak ik van de informatie nou een xml?
Als mijn xml er bijv. zo uit ziet

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?xml version="1.0" encoding="UTF-8"?>

<music>
<song>
<id>1</id>
<title>Someone Like You</title>
<artist>Adele</artist>
<thumb_url>http://api.androidhive.info/music/images/adele.png</thumb_url>
</song>
</music>

en ik wil informatie van bijv. top40.nl hier in zetten hoe doe ik dat dan?

id = plaatsnummer
title = titel
artist = artiest
thumb_url = afbeelding
 
Keizer Webdesign

Keizer Webdesign

16/11/2012 21:14:03
Quote Anchor link
@Eddy Erkelens

Bedankt deze code.
Ik heb alleen nog een vraag.
Wat als ik nou van http://www.sbs6.nl/ajax/Video/page/1 een afbeelding wil pakken:

<span class="icon btnIconVideo">&nbsp;</span></a>
<div class="iBody" style="width:auto;">
<h2><a href="/programmas/the-price-is-right/videos/seizoen-0/aflevering-60/the-price-is-right">The Price is Right</a></h2><p><a href="/programmas/the-price-is-right/videos/seizoen-0/aflevering-60/the-price-is-right">Aflevering 60</a></p><p class="alt"><a href="/programmas/the-price-is-right/videos/seizoen-0/aflevering-60/the-price-is-right">16 november / 30:19 min</a></p> </div>
</div>
<div class="i iBorder" style="">
<a href="/programmas/droomhuis-op-het-platteland/videos/seizoen-0/aflevering-42/droomhuis-op-het-platteland" class="m mLeft" >
<img src="/data/thumb/sbs_media_image/1241000/1241112/w100.350bb_r16-9_ebfe4e4ebf5f243d5875f0b0be880cd4.jpg" alt="Droomhuis op het platteland" width="100" height="56"/>


Daar van dus het kopje <img></img> en dan wil ik alleen die link hebben:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php

    // TAAK 1: verkrijg meditatie
// TAAK 1: verkrijg meditatie

    $tekst = file_get_contents('http://www.sbs6.nl/ajax/Video/page/1');
    //$tekst = htmlentities($tekst);
 $tekst = strip_tags($tekst, "<img></img>");

    echo '' . $tekst . '';
?>


dit hier boven werkt niet wat moet ik dan nog veranderen?

Alvast bedankt
 
Eddy E

Eddy E

16/11/2012 21:28:44
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
    
    // laad HTML in
    $html = file_get_contents('http://www.sbs6.nl/ajax/Video/page/1');
    
    // strip alles behalve de <img>'s (en kale tekst...)
    $html = strip_tags($html, "<img></img>");
    
    // maak de src kloppend, want hoe weet je browser waar je het vandaan moet halen?
    $html = str_replace('src="/', 'src="http://www.sbs6.nl/', $html);

    // neem nu alle afbeeldingen (eventueel kan regel 7 dus weg)
    preg_match_all('/(<img[^>]+>)/i', $html, $imgs);

    // en laat eens gewoon zien wat we hebben...
    // je zou die [0] weg kunnen halen: dan krijg je alles dubbel...

    echo '<pre>' . print_r($imgs[0], true) . '</pre>';
    
    // was dat zo moeilijk? StackOverflow via Google....
?>


Ik moet ook Google gebruiken hoor.
Dat is helemaal niet erg. Kan je zelf ook...
Gewijzigd op 17/11/2012 08:41:05 door Eddy E
 
Keizer Webdesign

Keizer Webdesign

17/11/2012 12:31:07
Quote Anchor link
Wat als ik nou meerderen urls wil???

ik heb deze code maar die werkt niet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
    
    // laad HTML in
    $html = file_get_contents('http://www.sbs6.nl/ajax/Video/page/1, http://www.sbs6.nl/ajax/Video/page/2, http://www.sbs6.nl/ajax/Video/page/3, http://www.sbs6.nl/ajax/Video/page/4, http://www.sbs6.nl/ajax/Video/page/5, http://www.sbs6.nl/ajax/Video/page/6, http://www.sbs6.nl/ajax/Video/page/7, http://www.sbs6.nl/ajax/Video/page/8, http://www.sbs6.nl/ajax/Video/page/9');
    
    // strip alles behalve de <img>'s (en kale tekst...)
    $html = strip_tags($html, "<img></img>");
    
    // maak de src kloppend, want hoe weet je browser waar je het vandaan moet halen?
    $html = str_replace('src="/', 'src="http://www.sbs6.nl/', $html);

    // neem nu alle afbeeldingen (eventueel kan regel 7 dus weg)
    preg_match_all('/(<img[^>]+>)/i', $html, $imgs);

    // en laat eens gewoon zien wat we hebben...
    // je zou die [0] weg kunnen halen: dan krijg je alles dubbel...

    echo '<pre>' . print_r($imgs[0], true) . '</pre>';
    
    // was dat zo moeilijk? StackOverflow via Google....
?>
 
Keizer Webdesign

Keizer Webdesign

01/12/2012 20:33:02
Quote Anchor link
waarom werken meerderen pagina's/links niet?
Gewijzigd op 01/12/2012 20:33:57 door Keizer Webdesign
 
Keizer Webdesign

Keizer Webdesign

02/12/2012 23:20:29
Quote Anchor link
Als ik dit maak:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$page1
= file_get_contents('http://www.sbs6.nl/ajax/Video/page/1');
$page2 = file_get_contents('http://www.sbs6.nl/ajax/Video/page/2');
$page3 = file_get_contents('http://www.sbs6.nl/ajax/Video/page/3');
$page4 = file_get_contents('http://www.sbs6.nl/ajax/Video/page/4');
$page5 = file_get_contents('http://www.sbs6.nl/ajax/Video/page/5');
$page6 = file_get_contents('http://www.sbs6.nl/ajax/Video/page/6');
$page7 = file_get_contents('http://www.sbs6.nl/ajax/Video/page/7');
$page8 = file_get_contents('http://www.sbs6.nl/ajax/Video/page/8');
$page9 = file_get_contents('http://www.sbs6.nl/ajax/Video/page/9');

$html = str_get_html($page1,$page2,$page3,$page4,$page5,$page6,$page7,$page8,$page9);
echo '<pre>' . $html . '</pre>';
?>

?>
Maar wat is er fout?
Gewijzigd op 02/12/2012 23:22:59 door Keizer Webdesign
 
- Ariën  -
Beheerder

- Ariën -

02/12/2012 23:38:26
Quote Anchor link
Wat je vertelt niet wat er volgens jouw fout gaat? Nogmaals:
We hebben geen glazen bol ;-)

En wat doet: str_get_html?
 

Pagina: 1 2 3 4 5 6 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.