0
votes

BelleSoup Findall renvoie un tableau vide (Python)

J'essaie d'obtenir des données de cette page Web https://playRuneterra.com/es-es / Actualités et la partie que j'essaie d'obtenir est-ce:

 Entrez la description de l'image ici

J'utilise Beatufulsoupe pour obtenir le code HTML et la recherche, mais lorsque j'ai utilisé la méthode de la suite pour obtenir cette ligne, cela me renvoie un tableau vide. J'ai essayé la même chose dans d'autres pages et ça marche bien. Que se passe-t-il?

Ceci est mon code:

 Entrez la description de l'image ici

Ceci est un exemple qui fonctionne:

 Entrez la description de l'image ici

Merci tout.


1 commentaires

Au lieu de publier une image du code, copiez-la coller le code lui-même, il est plus utile!


3 Réponses :


0
votes

Le deuxième paramètre sur Resightall devrait être un dict, pas une chaîne.


1 commentaires

Désolé, je l'ai édité avec la dernière modification que j'ai faite et qui a travaillé dans d'autres pages.



-2
votes

premier clic droit et entrez dans la page de la page de vue et recherchez le mot-clé que vous recherchez, si vous pouvez trouver votre contenu, vous pouvez utiliser la soupe sur elle, sinon vous pouvez utiliser SELENIUM

et Le cas de la soupe suffit d'envelopper les noms de classe en format dict xxx


2 commentaires

Cela ne fonctionnera pas car la bibliothèque de soupe téléchargera la page, puis recherchez la balise. Si le site Web est basé sur JS Framework, votre solution échoue.


Si c'est le cas, la soupe ne s'entraînera jamais, il doit avoir à des outils de navigateur sans tête tels que le sélénium



1
votes

Vous pouvez utiliser la PYQT pour créer un navigateur sans tête, puis gratter les données du site Web. Voici le code de démonstration pour vous:

import bs4 as bs
import sys
import urllib.request
from PyQt5.QtWebEngineWidgets import QWebEnginePage
from PyQt5.QtWidgets import QApplication
from PyQt5.QtCore import QUrl

class Page(QWebEnginePage):
    def __init__(self, url):
        self.app = QApplication(sys.argv)
        QWebEnginePage.__init__(self)
        self.html = ''
        self.loadFinished.connect(self._on_load_finished)
        self.load(QUrl(url))
        self.app.exec_()

    def _on_load_finished(self):
        self.html = self.toHtml(self.Callable)
        print('Load finished')

    def Callable(self, html_str):
        self.html = html_str
        self.app.quit()


def main():
    page = Page('https://playruneterra.com/es-es/news')
    soup = bs.BeautifulSoup(page.html, 'html.parser')
    js_test = soup.find('h2', class_='heading-03 src-component-content-NewsItem-___NewsItem-module__title___3OcDj')
    print(js_test.text)

if __name__ == '__main__': main()


3 commentaires

Je vais essayer ça


J'avais tellement de travail et je ne pouvais pas l'essayer plus tôt, mais ça ne marche pas pour moi. JS test est vide


Étrange. Ça marche sur ma fin. Y a-t-il une erreur ou quelque chose?