1
votes

Utilisation d'un robot d'exploration PHP pour trouver certains mots sans certains éléments

Je suis http://simplehtmldom.sourceforge.net/ pour créer un robot d'exploration Web en utilisant php, mais je ne comprends pas comment rechercher des mots sans spécifier d'élément. La recherche de mots se fait donc sur la base de toutes les données disponibles. car le problème ici est que maintenant je spécifie les données recherchées en utilisant l'élément

mais lorsqu'il n'y a pas d'élément

le résultat est vide.

ceci est mon code

foreach($html->find() as $element) 

par exemple je veux essayer de rechercher des mots qui contiennent 'yang' mais, les résultats sont vides car ces mots ne contiennent pas le

élément. entrez la description de l'image ici

mes résultats entrez la description de l'image ici

mais si le mot est contenu dans l'élément

, le résultat va bien. entrez la description de l'image ici

im tryng pour changer cette ligne

foreach($html->find('<p>') as $element) 

en

<?php
include "simple_html_dom.php";
$html = file_get_html('https://adityadees.blogspot.com/');

foreach($html->find('<p>') as $element) 
if (strpos($element, 'yang') !== false) {
    echo $element;
} else {
    echo $element;
}
?>


3 commentaires

Donc, l'entrée est la page Web et un mot, la sortie doit être UNIQUEMENT DIRE si ce mot existe dans une page Web?


les résultats attendus sont les mêmes que @ user11222393 sauf que sans spécifier certains éléments, en d'autres termes, l'entrée est la page Web entière. car peut-être que le mot est dans le pied de page ou dans une autre partie.


Si vous avez ce mot, pourquoi voudriez-vous afficher le paragraphe entier? Le titre de votre question me donne l'intention de simplement vérifier si ce mot existe ou non dans une page Web.


3 Réponses :


0
votes

Que diriez-vous de:

foreach($html->find('<body>') as $element) 
if (strpos($element, 'yang') !== false) {
    echo $element;
} else {
    echo $element;
}


1 commentaires

en utilisant ce code, le résultat n'affiche pas les résultats de la recherche.



0
votes

En inspectant la source d'une page donnée, vous pouvez voir que le résumé de l'article se trouve à l'intérieur de la balise div avec class = item-snippet.

Bagaimana Cara Mengganti Akun Mobile Legend ? itulah yang selalu dipertanyakan oleh orang yang baru memulai bermain game Mobile Legend. S...
Bagaimana Cara Mengaitkan Akun Mobile Legend di Patch Baru ? Mungkin masih ada yang bingung tentang cara mengaitkan akun mobile legend den...
Kali ini kita akan membahas tentang bagaimana cara menghitung luas persegi panjangan dengan PHP Hal yang pertama dilakukan adalah membuat ...

Vous pouvez obtenir votre résultat si vous recherchez votre mot dans un tel div:

include('simple_html_dom.php');

$html = file_get_html('https://adityadees.blogspot.com/');

foreach($html->find('div[class=item-snippet]') as $element) {

    if (strpos($element, 'yang') !== false) {

        echo $element;

    } 

}

résultat:

<div class='item-snippet'> Bagaimana Cara Mengganti Akun Mobile Legend ?  itulah yang selalu dipertanyakan oleh orang yang baru memulai bermain game Mobile Legend.  S...</div>

Est-ce que c'est que vous cherchez?


1 commentaires

oui les résultats que j'attendais étaient comme ça, mais sans préciser certaines parties de l'élément. imaginez comme utiliser ctrl + f pour trouver la partie mot. en d'autres termes, recherchez des mots sur toutes les pages Web.



1
votes

Voulez-vous trouver tous les paragraphes / textes contenant le mot que vous avez donné?

<?php 
include('simple_html_dom.php');

$html = file_get_html('https://adityadees.blogspot.com/');

$strings_array = array();

//it searches for any (*) tag with text yang in it
foreach($html->find('*[plaintext*=yang]') as $element) {
    //take only elements which doesn't have childnodes, so are last ones in recursion 
    if ($element->firstChild() == null) {
        //there still are duplicate strings so add only unique values to an array
        if (!in_array($element->innertext, $strings_array)) {
            $strings_array[] = $element->innertext;

        }
    } 
}

echo '<pre>';
print_r($strings_array);
echo '</pre>';

?>

Ce n'est pas une solution définitive, mais quelque chose pour commencer. Au moins, il trouve le mot yang 61 fois - comme dans la source html de la page donnée.


3 commentaires

mais pourquoi cela ne fonctionne pas pour une autre page? J'essaye de changer l'URL en adityadees.blogspot.com/2019/01/melihat -rangking-website.htm‌ l


Quel est le résultat? Ça marche pour moi. Il trouve 9 chaînes contenant 12 mots yang. Dans la source il y en a 13, car on est en meta tag


ok cela fonctionne, je suis désolé, je ne vois pas si vous éliminez la redondance des données, donc j'ai mal calculé. Merci beaucoup.