J'essaie de Webscreapre https://in.udacy.com/courses/all. J'ai besoin d'obtenir les cours montrés lors de la saisie de la requête de recherche. Par exemple: si je saisis Python, il y a 17 cours comme des résultats.Je besoin de chercher ces cours uniquement. Ici, la requête de recherche n'est pas transmise dans le cadre de l'URL (ne pas obtenir la méthode) .SO Le contenu HTML ne change pas non plus. Ensuite, comment puis-je récupérer ces résultats sans traverser toute la liste des cours. Dans ce code, je récupère tous les liens de cours en obtenant le contenu et le percher du terme de recherche dans ce contenu.Mais cela ne me donne pas le résultat que j'attends.
import requests from bs4 import BeautifulSoup from bs4 import BeautifulSoup from bs4.element import Comment import urllib.request from urllib.request import Request, urlopen def tag_visible(element): if element.parent.name in ['style', 'script', 'head', 'title', 'meta', '[document]']: return False if isinstance(element, Comment): return False return True def text_from_html(body): soup = BeautifulSoup(body, 'html.parser') texts = soup.findAll(text=True) visible_texts = filter(tag_visible, texts) return u" ".join(t.strip() for t in visible_texts) page = requests.get("https://in.udacity.com/courses/all") soup = BeautifulSoup(page.content, 'lxml') courses = soup.select('a.capitalize') search_term = input("enter the course:") for link in courses: #print("https://in.udacity.com" + link['href']) html = urllib.request.urlopen("https://in.udacity.com" + link['href']).read() if search_term in text_from_html(html).lower(): print('\n'+link.text) print("https://in.udacity.com" + link['href'])
3 Réponses :
Lire les tutoriels pour utiliser Demandes (pour la création de demandes HTTP) et Beautifulsoup (pour le traitement HTML). Cela vous apprendra ce que vous devez savoir pour télécharger les pages et extraire les données du HTML. P>
Vous utiliserez la fonction BTW, un outil utile pour vous, car vous apprenez à procéder à ce que cela vous permettra d'utiliser la fonction "Élément d'inspection" (pour Chrome / Firefox), qui peut être accessible en cliquant avec le bouton droit de la souris sur les éléments du navigateur, qui vous permettra. Pour examiner le code source entourant l'élément qui vous intéresse, vous pouvez obtenir des informations comme la classe ou l'identification, les divs parents, etc. qui vous permettront de le sélectionner dans Beautiful / LXML / etc. P>
Je pense qu'il devrait y avoir une meilleure option autre que la belle soupe et les demandes d'extraire les résultats de la recherche
Je pense que si vous lisez plus sur le raclage Web, vous constaterez que c'est probablement la solution la plus simple à votre problème. Vous voudrez peut-être qu'il y ait quelque chose de plus facile, mais c'est à peu près aussi facile que possible pour écrire des scripts pour récupérer HTML et extraire le texte de celui-ci. beauxoup.find_all ( ) Code>
Pour localiser tous les éléments
Classe = Cours-Sommaire-Carte Code>. Le contenu que vous souhaitez est dans ce
Utilisation de Demandes et Beautiful : sortie: p> AI Programming with Python
Blockchain Developer Nanodegree program
Knowledge-Based AI: Cognitive Systems
@Merin pourquoi avez-vous dépassé ma réponse?
J'ai essayé la méthode que vous avez suggérée. (En filtrant tous les cours contenant le terme de recherche). Mais cela me donne plus de cours que ceux figurant dans la page Web.Pour, par exemple, lorsque je recherche des cours de Python 17 viennent dans la page Web .mais quand je filtrais plus que 17 ans arrivent.
La page d'UDITÉS retourne tous les cours disponibles lorsque vous le demandez. Lorsque vous entrez une recherche, la page filtre simplement les données disponibles. C'est pourquoi vous ne voyez aucune modification à l'URL lors de la saisie d'une recherche. Un chèque à l'aide des outils de développement du navigateur confirme également cela. Cela explique également pourquoi la "recherche" est si rapide.
En tant que tel, si vous recherchez un cours donné, vous devrez simplement filtrer les résultats vous-même. Par exemple: p> ceci afficherait tous les cours avec python code> dans le titre: p>
Bienvenue sur Stackoverflow. Veuillez prendre le temps de lire cet article sur la manière de fournir un exemple minimal, complet et vérifiable et réviser votre question en conséquence. Ces conseils sur Comment poser une bonne question peut également être utile.
@Merin pourquoi avez-vous dépassé ma réponse?