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

  1. #1
    Futur Membre du Club
    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
    Points : 7
    Points
    7

    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
    Modérateur

    Homme Profil pro
    Architecte technique
    Inscrit en
    juin 2008
    Messages
    13 737
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 13 737
    Points : 23 114
    Points
    23 114

    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
    3 776
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : octobre 2008
    Messages : 3 776
    Points : 5 914
    Points
    5 914

    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
    Futur Membre du Club
    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
    Points : 7
    Points
    7

    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
    Futur Membre du Club
    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
    Points : 7
    Points
    7

    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
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    mars 2013
    Messages
    22
    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 : 22
    Points : 38
    Points
    38

    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
    Modérateur

    Homme Profil pro
    Architecte technique
    Inscrit en
    juin 2008
    Messages
    13 737
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 13 737
    Points : 23 114
    Points
    23 114

    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
    Futur Membre du Club
    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
    Points : 7
    Points
    7

    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
    Modérateur

    Homme Profil pro
    Architecte technique
    Inscrit en
    juin 2008
    Messages
    13 737
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 13 737
    Points : 23 114
    Points
    23 114

    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