IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau/Web Python Discussion :

Scrapping - Crawling - Python


Sujet :

Réseau/Web Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 8
    Par défaut Scrapping - Crawling - Python
    Bonjour à tous,

    Alors voilà mon problème. J'ai codé un programme de scrapping qui me récupère tout les commentaires de plusieurs pages d'un site internet. Pour ça je dois déclarer en début de mon code une liste qui prend les différentes url des pages du site à scrapper. Voilà le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    wiki = ["https://pubpeer.com/publications/E9F28E30E9C0770756D5FB85E77785", 
            "https://pubpeer.com/publications/ADBF355D36B1330508799A817D54A8",
            "https://pubpeer.com/publications/7EB3AD6E01A963F259264CF52FC6AE",
            "https://pubpeer.com/publications/F51E6986DA40F0DF5A5572CCA4E84B#3",
            "https://pubpeer.com/publications/6622AE15F8F3A5A8A6ACDB0F78EC76#5",
            "https://pubpeer.com/publications/55F676FA8BAD7D7B631AB941F96B63#17",
            "https://pubpeer.com/publications/D569C47E7BE09AD9D238BA526E06CA#30",
            ]
    z =0
    while z < len(wiki):
     
    	"""Parsing primaire du code afin de récupérer le contenu de la balise de commentaire"""			
    	page = urlopen(wiki[z])
    	soup = BeautifulSoup(page, "html.parser")
    	comment=soup.find('div', class_='vertical-container light-timeline no-margins')
     
    	"""On transforme mon objet soup en str"""
    	comment=str(comment)
     
    	"""On enlève les entités"""
    	comment = html.unescape(comment)
     
    	"""Je découpe mon objet qui devient donc une liste de str"""
    	comment = decoupe1(comment)
     
    	"""Je redécoupe chaque str (élément de ma liste), j'ai donc une liste de liste (2 niveau)"""
    	i=0
    	while i < len(comment):
    		comment[i] = decoupe2(comment[i])
    		i +=1
     
    	"""Insérer un nettoyage de [0][0] et [-1][-1]"""
    	comment[0][0] = comment[0][0][95:106]
    	comment[-1][-1] = comment[-1][-1][0:20]
     
     
    	"""J'extrait les données"""
    	for i, elmt in enumerate(comment):
    		comment[i] = extraction(comment[i])
     
     
    	"""J'ai donc maintenant une liste 'comment' contenant n comment[0] qui sont aussi des listes contenant 8 variables de type (str)"""
    	df = 'df%s' % z
    	df = pd.DataFrame(comment, columns=['id', 'inner_id', 'commentaire', 'created_at', 'user', 'username', 'photo_url', 'status', 'peeriodical_user', 'email', 'is_admin', 'rejected'])
     
     
    	"""J'exporte en .csv pour faire le traitement avec R"""
    	filename = 'data%s.csv' % z
    	df.to_csv(filename, index=True, encoding='utf-8')
     
    	z += 1
     
    	time.sleep(0.5)
    J'aimerais que la liste wiki soit automatisé (que mon code 'crawl' dans le site pour récupérer les url) sans devoir faire un copier coller de toutes les url du site.

    Je vous remercie

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 770
    Par défaut
    Salut,

    Citation Envoyé par jo_dlbn Voir le message
    J'aimerais que la liste wiki soit automatisé (que mon code 'crawl' dans le site pour récupérer les url) sans devoir faire un copier coller de toutes les url du site.
    C'est éventuellement à récupérer sur une des pages sur le site (et regarder comment il est construit pour y récupérer des infos, c'est votre boulot, et il n'a rien à voir avec la programmation).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    J'ai téléchargé la page https://pubpeer.com/publications/ et j'y ai trouvé un json tout prêt à l'emploi.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    >>> import json
    >>> with open("index.html", "rb") as inf:
    ...     content = inf.read()
    ... 
    >>> data = json.loads(content)
    >>> data.keys()
    dict_keys(['data', 'meta'])
    >>> data['data']
    [{'title': 'Administration of cardiac stem cells in patients with ischemic cardiomyopathy: the SCIPIO trial: surgical aspects and interim analysis of myocardial function and viability by magnetic resonance', 'authors': 'Atul R Chugh, Garth M Beache, John H Loughran, Nathan Mewton, Julius B Elmore, Jan Kajstura, Patroklos Pappas, Antone Tatooles, Marcus F Stoddard, Joao A C Lima, Mark S Slaughter, Piero Anversa, Roberto Bolli', 'identifiers': {'pubmed': '22965994', 'doi': '10.1161/CIRCULATIONAHA.112.092627'}, 'url': 'https://pubpeer.com/publications/E7226F9CC1D9A87B1C2E61F1AF649A', 'total_comments': 2, 'commenters': 'Barydia Pulverosa, Tabebuia Rosea', 'last_commented_at': '2018-11-05 10:11', 'published_at': '2012-09-11'}, {'title': 'Specialized and spatially organized coding of sensory, motor, and cognitive variables in midbrain dopamine neurons', 'authors': 'Ben Engelhard, Joel Finkelstein, Julia Cox, Weston Fleming, Hee Jae Jang, Sharon Ornelas, Sue Ann Koay, Stephan Thiberge, Nathaniel Daw, David Tank, Ilana Witten', 'identifiers': {'doi': '10.1101/456194'}, 'url': 'https://pubpeer.com/publications/B2A004701684A5174BCF861F3E21D2', .........................
    Simple non ?

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 8
    Par défaut
    Merci mais dans le json ya que trente articles (donc trentes pages) moi j'aimerai récupérer toutes les pages dans le sous dossiers du site https://pubpeer.com/publications qui sont identifié par un code qui représente un article (donc une page)

    Comme par exemple https://pubpeer.com/publications/E7226F9CC1D9A87B1C2E61F1AF649A

    Merci beaucoup

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 8
    Par défaut Requests HTTP - Aspiration - Crawling
    Bonjour à tous,

    Je cherche à récupérer tout les identifiants (30 caractères alphanumériques - il me semble que c'est uniquid) qui correspondent à des pages url dans un sous-dossier du site

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    wiki = ["https://lesite.com/dossier/E9F28E30E9C0770756D5FB85E77785",
            "https://lesite.com/dossier/7B8DDC913375F15C078F677F20594F",
            "https://lesite.com/dossier/94ED5E6C46D3073641BBB288518144",
            "https://lesite.com/dossier/FC11E3C70B0A34A86BB72DFDAF314B",
            "https://plesite.com/dossier/7B8DDC913375F15C078F677F20594F",
            "https://lesite.com/dossier/94ED5E6C46D3073641BBB288518144",
            "https://lesite.com/dossier/FC11E3C70B0A34A86BB72DFDAF314B",
            "https://lesite.com/dossier/E12FEC4CA1E19CE2F11353D5DDDD4A",
            "https://lesite.com/dossier/BFC94721BD4BFDCC08C3F9D57361CA",
            "https://lesite.com/dossier/3B78FDAC43495752BE22E4182F04BD#2",
            "https://lesite.com/dossier/0C9309BDDF091E165990F63692B4E1#7"
            ]
    J'ai essyé avec le module requests en passant des paramètres à mon url

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    payload = {'key1': 'value1', 'key2': 'value2'}
    r = requests.get("https://lesite.com/dossier/", params=payload)
    Mais c'est justement les paramètres que je recherche et je suis à d'idée...

    J'imagine qu'il faudrait faire une succession de requete au serveur qui gere la base de données PHP afin qu'il me renvoie l'url et après je pourrais récupérer l'identifiant avec une regex simple.

    Je vous remercie tous

  6. #6
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 25
    Par défaut
    oui
    et sans regex le résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ID = "https://lesite.com/dossier/E9F28E30E9C0770756D5FB85E77785".replace("https://lesite.com/dossier/","")

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 770
    Par défaut
    Salut,

    Citation Envoyé par jo_dlbn Voir le message
    Mais c'est justement les paramètres que je recherche et je suis à d'idée...
    On ne va pas les inventer et vous pouvez les trouver vous même en faisant cette requête avec votre navigateur Web.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 8
    Par défaut
    Ok j'ai dû mal m'exprimer

    ya pas loin de 6000 pages de ce type http://lesite.com/dossier/IDENTIFIANT et donc j'aimerais automatiser la récupération de ces identifiants

    Je peux pas faire 6000 requêtes HTTP dans mon navigateur mais avec une boucle python oui (en mettant time.sleep() pour éviter de me faire jeter par le serveur) ;D

    Grosso modo j'aimerais que mon code scan http://lesite.com/dossier/ pour y récupérer les url

    Merci

  9. #9
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 770
    Par défaut
    Citation Envoyé par jo_dlbn Voir le message
    Grosso modo j'aimerais que mon code scan http://lesite.com/dossier/ pour y récupérer les url
    Vous aviez déjà ouvert une discussion à ce sujet à laquelle on vous a répondu: étudier votre site Web pour savoir comment récupérer ces identifiants, c'est pas de la programmation Python et pas un travail qu'on fera à votre place.
    Après si vous avez trouvé une démarche qui permette de... et que vous rencontrez des difficultés pour le coder en Python, pourquoi pas venir ici et demander de l'aide. Mais vous n'en êtes pas encore là.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. [Python 3.X] Scrapping - Commentaires - Python- BeautifulSoup
    Par jo_dlbn dans le forum Réseau/Web
    Réponses: 6
    Dernier message: 22/10/2018, 10h31
  2. CORBA & PYTHON
    Par stan91stan dans le forum CORBA
    Réponses: 5
    Dernier message: 10/06/2004, 12h32
  3. module .so pour python... ?!
    Par totoetlititi dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 09/03/2004, 14h51
  4. [Lien]erreur dans mon programme python
    Par durnambule dans le forum Général Python
    Réponses: 11
    Dernier message: 29/01/2004, 14h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo