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: p>
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? P>
Ceci est mon code: P>
Ceci est un exemple qui fonctionne: p>
Merci tout. p>
3 Réponses :
Le deuxième paramètre sur Resightall code> devrait être un dict, pas une chaîne. p>
Désolé, je l'ai édité avec la dernière modification que j'ai faite et qui a travaillé dans d'autres pages.
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 p>
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
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()
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?
Au lieu de publier une image du code, copiez-la coller le code lui-même, il est plus utile!