Hoe kan ik een compleet html element uitlezen vanuit een string

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Snelle Jaap

Snelle Jaap

23/12/2017 13:37:31
Quote Anchor link
Ik lees een website uit met file_get_contents, de gehele site wordt dus omgezet in een string. Nu wil ik graag 1 element uitlezen, met name wat erin zit (maar daarvoor zal ik eerst het element moeten kunnen uitlezen). Hoe doe ik dat?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?PHP
$voorraad
= file_get_contents("https://website.nl");
?>

Is simpelweg hoe ik de site uitlees.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?PHP
En als voorbeeld wil ik dit: <p style="color:#1486c8;font-size:1.2em;">0 voorraad</p>
?>

Er staan meerdere p's op de site en zoals je ziet heeft hij geen class of id, dus op die manier kan ik er weinig mee. Hij zit wel binnenin een parentdiv, die een id heeft.

Dat ziet er zo uit dan (de bovenkant):

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?PHP
<div id="buy" style="z-index:999;">
                
<
h1>Product kopen</h1>

                
<
p style="color:#1486c8;font-size:1.2em;">0 voorraad</p>

?>


Is er een mogelijkheid om die eerste paragraaf uit de string te halen?
 
PHP hulp

PHP hulp

04/12/2021 05:04:15
 
Adoptive Solution

Adoptive Solution

23/12/2017 15:02:46
 
Rob Doemaarwat

Rob Doemaarwat

23/12/2017 19:47:04
Quote Anchor link
Ik doe dit soort dingen meestal gewoon even "snel & ranzig" met een reg-ex:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
preg_match('/<p.*?'.'>(\d+) voorraad</',$voorraad,$match); //'.' ivm PHPhulp code editor ...
//als er een $match is zit het aantal nu in $match[1]
Gewijzigd op 23/12/2017 19:48:26 door Rob Doemaarwat
 
Thomas van den Heuvel

Thomas van den Heuvel

23/12/2017 20:30:56
Quote Anchor link
Al gekeken of de betreffende site een feed of webservice heeft? Scrapen zou eigenlijk een van je laatste opties moeten zijn.
 
- Ariën -
Beheerder

- Ariën -

23/12/2017 21:49:48
Quote Anchor link
Allereerst is het inbreuk op auteurs- en of databankrechten.
Ten tweede heb je geen controle over de bron van de code. Als de eigenaar dit aanpast, dan scrapt jouw script geen of de onjuiste data, wat niet wenselijk is.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

23/12/2017 22:09:13
Quote Anchor link
- Ariën - op 23/12/2017 21:49:48:
Allereerst is het inbreuk op auteurs- en of databankrechten.
Ten tweede heb je geen controle over de bron van de code. Als de eigenaar dit aanpast, dan scrapt jouw script geen of de onjuiste data, wat niet wenselijk is.


Natuurlijk is een waarschuwing op zijn plaats maar de grote vraag is of dat inderdaad zo is. Het lijkt mij dat gegevens die openbaar zijn in principe verder verspreid mogen worden tenzij er misschien een aantal voorwaarden gesteld worden aan het gebruik van de website/gegevens.
 
- Ariën -
Beheerder

- Ariën -

23/12/2017 22:14:28
Quote Anchor link
Infeite geldt er standaard auteursrecht. Als de eigenaar van de site aangeeft dat de informatie gebruikt mag worden (onder voorwaarden) door anderen, dan is het een ander verhaal en mag je gewoon scrapen. Maar een webservice/feed wat Thomas voorstelt is een beter initiatief.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

23/12/2017 22:19:13
Quote Anchor link
Ariën, Weet jij waar we meer kunnen lezen over dat standaard auteursrecht? Lijkt me interessant zolang het enigszins te behappen is tenminste. Webservice, API of feed (or whatever) is technisch gezien natuurlijk beter.
 
- Ariën -
Beheerder

- Ariën -

23/12/2017 22:41:28
Quote Anchor link
Op Wikipedia staat wat informatie. Uiteraard wel met de wetsartikelen die ervoor geschreven zijn.
https://nl.wikipedia.org/wiki/Auteursrecht

Quote:
Auteursrecht is automatisch, in elk geval in de (vele) landen die de Berner Conventie ondertekend hebben: zodra iemand een werk maakt, rust daar in die landen auteursrecht op.

Wikipedia is verder Creative Commons Naamsvermelding/Gelijk delen. Verder heb je ook nog Citaatrecht die het mogelijk maakt dat je een deel van een tekst mag gebruiken onder bepaalde voorwaarden.
Gewijzigd op 23/12/2017 22:44:16 door - Ariën -
 
Aad B

Aad B

24/12/2017 16:16:28
Quote Anchor link
- Ariën - op 23/12/2017 21:49:48:
Allereerst is het inbreuk op auteurs- en of databankrechten.
Hoe weet je dat? Ik vind het altijd jammer dat de 2e of 3e entry in zo'n topic steevast een politie-agent-entry is zonder enige kennis van het feit of er daadwerkelijk sprake is van inbreuk op auteurs- en of databankrechten. Wellicht de vraag voortaan wat sympathieker stellen: Heb je toestemming van de eigenaar of is het wellicht een van je eigen sites??

Ander gebruik kan ook, ik heb voor mezelf uitgebreide scrape scripting (linux commandline scripts in cron) om verspreide informatie op te halen bij vnf.fr die vervolgens netjes gesorteerd in mijn mailbox komt elke vrijdag. Ik zou dat ook in php kunnen doen en hier tips kunnen vragen maar dan volgt er meteen een waarschuwing: inbreuk op auteurs- en of databankrechten?? Kortom, zo'n vraag duidt niet altijd op her-publicatie. Misschien wil TS gewoon een prive overzichtje bouwen van enkele artikelen waarin hij geinteresseerd is en waarmee hij bestellingen doet. Workflow voor zichzelf bijvoorbeeld.
Gewijzigd op 24/12/2017 16:26:57 door Aad B
 
Nick Vledder

Nick Vledder

24/12/2017 17:20:58
Quote Anchor link
Los van het feit of scrapen van de website in kwestie mag... webscraper.io is wellicht een tool die van pas kan komen. Niet voor integratie in script, maar zeer geschikt voor verkenning van structuur, etc. Succes met vervolgstappen.

Edit: ik bedoel import.io ... daarmee heb ik zelf zitten experimenteren en imho (naar.mijn bescheiden mening) kan erg handig zijn om info van websites te scrapen.
Gewijzigd op 26/12/2017 10:45:42 door Nick Vledder
 
Thomas van den Heuvel

Thomas van den Heuvel

25/12/2017 00:43:39
Quote Anchor link
Aanhakend op @Aad B, hier kan het natuurlijk ook uitmaken of je de "geleende data" voor commerciële doeleinden gebruikt of niet. Zolang je een beetje intelligent scraped (ipv de site praktisch te DDoS'en met requests) -bijvoorbeeld door dingen te cachen- en je je kop niet te ver boven het maaiveld uitsteekt lijkt mij dit niet zoveel uitmaken.

EDIT: maar als er dus slimmere oplossingen voorhanden zijn zou ik die eerst proberen :p.
Gewijzigd op 25/12/2017 00:44:36 door Thomas van den Heuvel
 
Nick Vledder

Nick Vledder

26/12/2017 10:48:55
Quote Anchor link
Correctie: verwijzing naar import.io Dit platform heeft wel een API en kan je snel vooruithelpen bij het developen.
 



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.