Diskuze: Parsování HTML, začátečník
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 16 zpráv z 16.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj, tak zase ja
takova funkce neexistuje - musis pouzit file_get_contents
Aha ale v navodu na te adrese pisou presne tenhle příkaz...zkusim to o polocase fotbalu
Ajo promin - moje chyba...
musis tu knihovnu nejdrive includnout do PHP a pak ta funkce pojede
Naincludovat knihovnu do php? Mrknu na google pak jak se to dělá, nemam tušení
Nejdriv stahnes knihovnu z https://sourceforge.net/…mldom/files/ a pak pred pouzitim te funkce pouzijes require_once('cestakeknihovne/simple_html_dom.php');
A ty složky musi byt na serveru / localhostu v složce s tim projektem, jinak to.nebude fungovat?
Musis mit na serveru/localu akorat tu knihovnu a mit povolene fopen wrapper aby jsi mohl nacitat data z externi URL. Jestli pak na hostingu zjistis, ze nejde kvuli omezeni nacitat z externi URL (pak by ti ale na WP nefungovaly aktualizace), tak by jsi musel tu parsovanou html stranku nahrat taky na server
Tak jsem pořád na local hostu, už mi to nějakým způsobem něco vytváří, ale vypisuje mi to, že nefunguje stream protože v té knihovně není ta složka. To je asi tím, že nemám povolené to fopen, na stack overflow píšou že to musím pustit nějak přes CMD...
Warning: file_get_contents(hokejbal.cz/1-liga/tabulky/): failed to open stream: No such file or directory in C:\xampp\htdocs\PhpProject1\simple_html_dom.php on line 75
Tak v php.ini mám :
; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
; http://php.net/allow-url-fopen
allow_url_fopen=On
Přesto to nešlo, takže jsem použil
<?php
// put your code here
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "http://www.google.co.in");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
curl_close($curl);
print $result;
?>
A jdu zkoušet dál
Asi by bylo lepsi sem placnout celej kod z toho co bych si mohl domyslet
:
misto
file_get_contents(hokejbal.cz/1-liga/tabulky/)
patri urcite
file_get_contents('http://hokejbal.cz/1-liga/tabulky/');
jinak se bez toho http:// pokousi php hledat mezi soubory na disku
neboli patri tam
file_get_html('http://hokejbal.cz/1-liga/tabulky/');
Nene, uvozovky tam byli, vypadalo to takhle:
<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<?php
// put your code here
$html = file_get_html('http://www.google.com/');
?>
</body>
</html>
Ale tady https://stackoverflow.com/…2279/8377142 se to už nějak dohádalo, že bych měl použít tu knihovnu CURL, je to koneckonců i v návodu přímo od toho simpledomHTML, že pokud to nejde, tak by se mělo jít do toho curl. Teď to vypadá nějak takto, dostanu celou stránku a snažím se z toho vyříznout tu specifickou část kterou chci, ale nějak mi to nereaguje ten příkaz ret
<?php
// put your code here
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "http://hokejbal.cz/1-liga/tabulky/");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
curl_close($curl);
print $result;
str_get_dom;
$ret = $html->find('.standings tablesort tablesorter tablesorter-default');
?>
Mas tam ted spatne cileni - kdyz uz, tak tam patri
$ret = $html->find('.standings.tablesort.tablesorter.tablesorter-default');
bez mezer = prvek, co ma vsechny tridy
Jenže to je jakoby to byly jednotlivé třídy, já to ale mám ve webmaster tools takto, jako jednu třídu s několika slovným názvem..
<table class="standings tablesort tablesorter tablesorter-default">
Zkusil jsem i tu tvojí variantu a taky nic
P.S. Google chrome
Edit:
Neměl jsem vytvořený $html, takže pokračuji dál v bádání:
<?php
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "http://hokejbal.cz/1-liga/tabulky/");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
curl_close($curl);
print $result;
$html= str_get_html($str);
str_get_dom;
$ret = $html->find('.standings tablesort tablesorter tablesorter-default');
?>
Edit:
Mám to, po 6 hodinách na stackoverflow a google. Děkuji za rady! Určitě mi
to rozšířilo trošku obzory. Výsledný kód kdyby někdo řešil stejný
problém:
$html = file_get_html('http://hokejbal.cz/1-liga/tabulky/');
$ret = $html->find('table.standings', 1);
print $ret;
Zobrazeno 16 zpráv z 16.