Scraping Webpages in Python with Beautiful Soup

Résolu/Fermé
tom@ Messages postés 202 Date d'inscription lundi 21 mars 2005 Statut Membre Dernière intervention 15 juin 2022 - Modifié le 30 mars 2018 à 22:04
tom@ Messages postés 202 Date d'inscription lundi 21 mars 2005 Statut Membre Dernière intervention 15 juin 2022 - 31 mars 2018 à 23:25
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@

A voir également:

1 réponse

jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649
31 mars 2018 à 00:54
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
tom@ Messages postés 202 Date d'inscription lundi 21 mars 2005 Statut Membre Dernière intervention 15 juin 2022 50
Modifié le 31 mars 2018 à 23:26
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.
0