Web scraping statique avec BeautifulSoup
Récemment j'ai cherché des projets open source auxquels contribuer. L'idéal pour commencer à contribuer est de trouver une issue avec le label good first issue
. L'ennui c'est qu'il faut parcourir chaque repo et aller voir dans les issues s'il y en a une avec ce label ou alors aller visiter directement l'url https://github.com/{username}/{repo_name}/contribute
Peut être que j'ai tout simplement mal cherché mais je n'ai pas trouvé de moyens dans github de lister tous les repos ayant ce genre d'issues en fonction d'un filtre de topic
. Je me suis donc servi de la deuxième méthode expliquée ci dessus et de la librairie BeautifulSoup pour parcourir automatiquement les repos filtrés par topic et lister les issues avec le label good first issue s'il y en a.
cf. tweet 👇
P-A@_pacdevLooked for «good first issues» to contribute on @github but didn’t find way to list them. I’ve built very simple web app to list them. …t-issues-main-eqb5sc.streamlitapp.com hope it can help. Feel free to contribute github.com/p-acDev/find-g… 🙏@streamlit #pythonprogramming #github #OpenSource21:48 PM - 25 Aug 2022
Ci dessous les quelques étapes qui permettent d'extraire les contenus des pages html:
On créé un objet instance de la classe
soup = BeautifulSoup(html_content, 'html.parser')
html_content
est le contenu html de la page obtenu avec unrequests.get(url)
par exemple
Sur cet objet soup
on applique les méthodes de la librairie. Il suffit de repérer dans sa page html statique, quelle est notre cible (F12
par exemple pour obtenir le code source de la page).
Le résultat est une liste de dictionnaires qui contiennent les infos de cette balise en particulier. Pour obtenir le lien hypertext il suffit d'aller chercher le contenu href de chaque dictionnaire.
👉 Plus de détail dans le répo
👉 N'hésitez pas à contribuer
Web scraping dynamique
Il y a un ennui. Cette librairie est un outil pour les pages statiques. On ne peut pas interagir avec le site. Quand on applique un filtre par topic
dans github explore, on ne récupère qu'une liste de quelques repos avec un bouton load more
à la fin
C'est un utilisateur github AlexMihalache99 qui m'a orienté vers la solution
Comment for #2
BeautifulSoup is pulling data out of HTML and XML files.
That means is a static way of extracting data. Because it is static it does not work on webpages that load the results dynamically, for example, your web page that has a load more button instead of a page number bar.
A solution for this is using a library that scrapes the data dynamically.
Selenium is such a library that might satisfy your needs.
MAJ avec selenium
La suite dans une prochaine update
Top comments (0)