Scraping Webpages in Python with Beautiful Soup [Résolu/Fermé]

Signaler
Messages postés
198
Date d'inscription
lundi 21 mars 2005
Statut
Membre
Dernière intervention
15 juillet 2019
-
tom@
Messages postés
198
Date d'inscription
lundi 21 mars 2005
Statut
Membre
Dernière intervention
15 juillet 2019
-
Bonjour,
je souhaiterais que vous preniez attention à ce post.
Pour faire simple, il sagit de scraping avec python.
Dans les faits, avec python, charger le contenu d'une page HTML dans une variable , puis faire un traitement.

Dans ce cas, beautifullsoup est utilisé.

Pour résumer, une requette est envoyée à un lien pour permettre de stocker une page HTML (integralement) dans un fichier désigné.
J'y suis parvenu avec ce code :


import os
import csv
import requests
from bs4 import BeautifulSoup

def liens ():
listeliens=["https://link.tld","http://link.tld"]
return listeliens

extention = ".csv"
i = 0
j = len(liens())
for adr in liens():
while i<j:
nomfichier = str(i) + extention
print nomfichier
with open (nomfichier.decode("utf-8"),"w") as contenu:
ecrire = csv.writer(contenu)
i+=1

Résultat:
~/Documents/python/test$ python htmlUp.py 
0.csv
1.csv


Le langage python est le pus approprié à mes attentes.
J'aurais besoin d'un coup de pousse!
Mon but est d'utiliser Beautifulsoup pour le stockage de pages dans un fichier particulier, avant de faire un traitement par la suite.

Je sollicites votre aide pour comprendre une erreur avec le code suivant...

L'erreur est :
Traceback (most recent call last):
File "htmlUp2.py", line 25, in <module>
soup = BeautifulSoup.BeautifulSoup(html)
AttributeError: type object 'BeautifulSoup' has no attribute 'BeautifulSoup'


Le script est :
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
import csv
import ssl
import requests
from urllib2 import urlopen
from bs4 import BeautifulSoup

def liens ():
listeliens=["https://lien1.tld","http://lien1.tld"]
return listeliens

extention = ".csv"
i = 0
j = len(liens())
for adr in liens():
while i<j:
context = ssl._create_unverified_context()
html = urlopen(adr, context=context).read()
soup = BeautifulSoup.BeautifulSoup(html)
nomfichier = str(i) + extention
print nomfichier
with open (nomfichier.decode("utf-8"),"w") as contenu:
ecrire = csv.writer(soup)
i+=1




Si vous pouvez me donner des indices je vous serait gré.

Je continue mes recherches.
Merci.

Cordialement,
Tom@

1 réponse

Messages postés
27369
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 janvier 2020
2 048
Bonjour

Ne serait-ce pas plutôt :
soup = BeautifulSoup(html_doc, 'html.parser')

dixit la doc : https://beautiful-soup-4.readthedocs.io/en/latest/
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 83730 internautes nous ont dit merci ce mois-ci

tom@
Messages postés
198
Date d'inscription
lundi 21 mars 2005
Statut
Membre
Dernière intervention
15 juillet 2019
32
merci beaucoup. Cela fonctionne bien maintenant. Il y avez aussi une autre erreur de ma part. La variable de la méthode writer() était mal désignée. C’était la variable 'html' à la place.