Comment gratter des données dynamics avec PHP Simple HTML DOM Parser

Tout d’abord, laissez-moi vous dire que j’ai lu de nombreux fils de “mise au rebut” et qu’aucun ne m’aide. J’ai également consulté Internet pendant des jours et maintenant, je m’approche du fil. J’espère que quelqu’un pourra nous éclairer à ce sujet.

J’utilise PHP Simple HTML DOM Parser pour extraire des données d’une page. L’URL avec laquelle je travaille sert du contenu dynamic et je n’arrive apparemment pas à obtenir quoi que ce soit pour extraire ce contenu. J’ai besoin d’extraire le texte (en clair) de

à

, j’ai l’impression qu’une fois j’en ai un au travail, je peux avoir les autres. Parce que cette information n’est pas réellement sur la page lorsque la page est chargée mais entre dans le repli après le chargement de la page, je suis dans une ornière.

Cela dit, voici ce que j’ai essayé:

 echo file_get_html('http://sheriffclevelandcounty.com/p2c/jailinmates.aspx')->plaintext; 

Ce qui précède va me montrer tout MAIS les informations dont j’ai besoin, comme ceci:

J’ai aussi essayé d’utiliser l’exemple du plugin en utilisant IMDb et modifié à mes besoins, c’est ça:

 // Defining the basic cURL function function curl($url) { // Assigning cURL options to an array $options = Array( CURLOPT_RETURNTRANSFER => TRUE, // Setting cURL's option to return the webpage data CURLOPT_FOLLOWLOCATION => TRUE, // Setting cURL to follow 'location' HTTP headers CURLOPT_AUTOREFERER => TRUE, // Automatically set the referer where following 'location' HTTP headers CURLOPT_CONNECTTIMEOUT => 120, // Setting the amount of time (in seconds) before the request times out CURLOPT_TIMEOUT => 120, // Setting the maximum amount of time for cURL to execute queries CURLOPT_MAXREDIRS => 10, // Setting the maximum number of redirections to follow CURLOPT_USERAGENT => "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1a2pre) Gecko/2008073000 Shredder/3.0a2pre ThunderBrowse/3.2.1.8", // Setting the useragent CURLOPT_URL => $url, // Setting cURL's URL option with the $url variable passed into the function ); $ch = curl_init(); // Initialising cURL curl_setopt_array($ch, $options); // Setting cURL's options using the previously assigned array data in $options $data = curl_exec($ch); // Executing the cURL request and assigning the returned data to the $data variable curl_close($ch); // Closing cURL return $data; // Returning the data from the function } // Defining the basic scraping function function scrape_between($data, $start, $end){ $data = ssortingstr($data, $start); // Ssortingpping all data from before $start $data = substr($data, strlen($start)); // Ssortingpping $start $stop = ssortingpos($data, $end); // Getting the position of the $end of the data to scrape $data = substr($data, 0, $stop); // Ssortingpping all data from after and including the $end of the data to scrape return $data; // Returning the scraped data from the function } $scraped_page = curl("http://sheriffclevelandcounty.com/p2c/jailinmates.aspx"); // Downloading IMDB home page to variable $scraped_page $scraped_data = scrape_between($scraped_page, '', '
'); // Scraping downloaded dara in $scraped_page for content between and tags echo $scraped_data; // Echoing $scraped data, should show "The Internet Movie Database (IMDb)"

Bien sûr, aucune de ces méthodes ne fonctionne, alors ma question est la suivante: comment utiliser l’parsingur DOM Simple PHP pour obtenir un contenu dynamic chargé après le chargement de la page? Est-ce possible ou suis-je simplement sur la mauvaise voie ici?

Je comprends que vous avez besoin des données dynamics contenues dans jqgrid. Pour cela, vous pouvez utiliser post URL qui, en réponse, fournit les données.

 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://sheriffclevelandcounty.com/p2c/jqHandler.ashx?op=s"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch,CURLOPT_POST, 1); curl_setopt($ch,CURLOPT_POSTFIELDS, array( 'rows'=>10000, //Here you can specify how many records you want 't'=>'ii' )); $output = curl_exec($ch); curl_close($ch); echo "
"; print_r(json_decode($output));